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

所以现在它会正常工作。