如何将16进制字符串“0XFF0X300X0C”转化为字节数组{FF 30 0C},反过来也能转化,求解答

让字节数组转化成16进制字符也可以

第1个回答  2012-04-26
void ArrayToString(const unsigned char *array, int size, char *str)
{
const char tab[] = "0123456789ABCDEF";
for (int i = 0; i < size; i++)
{
//处理高位
str[i * 2] = tab[array[i] >> 4];
//处理低位
str[i * 2 + 1] = tab[array[i] & 0x0F];
}
}

int CharToInt(char ch)
{
if ( '0' <= ch && ch <= '9' )
{
return ch - '0';
}
else if ( 'A' <= ch && ch <= 'F' )
{
return ch - 'A' + 10;
}
else
{
return 0;
}
}

void StringToArray(const char *str, int size, unsigned char *array)
{
for (int i = 0; i < size / 2; i++)
{
array[i] = ( CharToInt(str[i * 2]) << 4 ) ^ CharToInt( str[i * 2 + 1] );
}
}

void main()
{
char *str = "AF1023";
unsigned char array[3] = {0};
char buf[7] = {0};
StringToArray( str, 6, array );
ArrayToString( array, 3, buf );
printf("原始字符串 %s\n", str);
printf("转成数组再转回字符串 %s\n", buf);
}
自己要确保 接收参数的缓冲的大小,别写越界了
第2个回答  2012-04-26
个人感觉完全没必要转换,在内存中0XFF0X300X0C字符串的存储方式也是FF 30 0C的形式,仅多一个\0(同样是ASCII码)。楼主想实现什么效果?追问

服务器端接受的格式智能是字节数组{FF 30 0C},但是外层定义的格式又是'0XFF0X300X0C”我如果直接把字符串传到服务器上去会识别不了的

追答

大可不必担心,没问题的,字节流而已,没必要这样转换。

本回答被提问者采纳
相似回答