ASC与HEX之间的转换

您所在的位置:网站首页 hex转换 ASC与HEX之间的转换

ASC与HEX之间的转换

2022-05-24 23:17| 来源: 网络整理| 查看: 265

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