C中的char * string到hex arrary
我有char * para.mac
,字符串c8934641d0b7
存储在其中。
我想将它转换为hex数组int m[6]
,make
m[0]=0xc8; m[1]=0x93; ... m[5]=0xb7;
我试着这样做:
int i; int m[6]; sscanf(para.mac, "%x%x%x%x%x%x", &m[0], &m[1], &m[2], &m[3], &m[4], &m[5]); for(i=0;i<6;i++) printf("%i \r\n",m[i]);
但它似乎不起作用。
而且我不知道为什么结果对我显示如下:
1178718391 0 0 134448233 8 134272063
我认为应该是
200(0xc8) 147(0x93) 70(0x46) 65(0x41) 208(0xd0) 183(0xb7)
所以有什么问题?
如果我没弄错的话,你走在正确的轨道上。
考虑尝试: "%2x%2x%2x%2x%2x%2x"
,这意味着每个hex数字最多只能消耗2个字符。
您正在使用sscanf
函数中唯一的%x。
sscanf(buf, "%x%x%x%x%x%x", &m[0], &m[1], &m[2], &m[3], &m[4], &m[5]);
这将只获得hex字符。 但它应该用两个字符来转换它。 您可以像这样更改sscanf
函数:
sscanf(buf, "%2x%2x%2x%2x%2x%2x", &m[0], &m[1], &m[2], &m[3], &m[4], &m[5]);
现在根据你的字符串: c8934641d0b7
第一个%2x将获得c8
,第二个%2x将获得93
,第三个将获得46
个第四个将获得第四个将获得d0
,最后第五个将获得b7
。
所以现在它会正常工作。