ASC与HEX之间的转换 |
您所在的位置:网站首页 › hex转换 › ASC与HEX之间的转换 |
ASC与HEX之间的转换
ASC与HEX之间的转换 有这么两个函数: 函数 原型 功能 返回值 参数 备注 hex2asc __int16 hex2asc(unsigned char *strhex,unsigned char *strasc,__int16 length); 字符串转换函数,十六进制字符转换成普通字符 成功则返回 0,否则返回非0 strhex:要转换的字符 strasc:转换后的字符 length:字符strasc的长度 长转短 asc2hex __int16 asc2hex(unsigned char *strasc,unsigned char *strhex,__int16 length); 字符串转换函数,普通字符转换成十六进制字符 成功则返回0,否则返回非0 strasc:要转换的字符 strhex:转换后的字符 length:字符strasc的长度 短转长
我们首先对这两个函数进行的测试如下: // hex2asc和asc2hex的测试程序 #include "dculd.h" #include using namespace std; #pragma comment(lib, "dculd.lib") int main() { unsigned char strhex[101] = "0123456789ABCDEF"; //unsigned char strhex[101] = "0123456789ABCD8"; unsigned char strasc[101] = {0}; hex2asc(strhex, strasc, 8); cout = '0' && ch = 'A' && ch = 'a' && ch = '0' && ch = 'A' && ch = 'a' && ch < 'f') { return 10 + ch - 'a'; } else { return -1; } } unsigned char ValHex(int val) { if (val >= 0 && val = 10 && val strlen((const char*)strhex)) { length = strlen((const char*)strhex); } // 检测strhex是否合法,是否存在非0~9、A~F、a~f字符 for (auto i = 0; i != length; ++i) { if (!IsHex(strhex[i])) { return -2; } } // 以下for-if结构可以同时处理奇偶的情况 int pos = 0, i = 0; for (i = 0; i < length - 1; i += 2) { unsigned char tmp = HexVal(strhex[i]) * 16 + HexVal(strhex[i + 1]); strasc[pos++] = tmp; } if (i == length - 1) { unsigned char tmp = HexVal(strhex[i]) * 16; strasc[pos++] = tmp; // 用来标识length的奇偶,这里是奇数 strasc[pos++] = 1; } else { // 用来标识length的就,这里偶数 strasc[pos++] = 2; } strasc[pos++] = 0; return 0; } int AscToHex(unsigned char* strasc, unsigned char* strhex, int length) { length = length |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |