C - 将char *转换为unsigned char数组

时间:2017-04-20 21:17:37

标签: c arrays char type-conversion

我正努力将char *macAddress转换为unsigned char mac[6]但到目前为止没有成功。我的输入字符串看起来像“00:10:6f:16:01:b3”,我想把它分成mac [0] = 0x00,mac [1] = 0x10等。

我尝试使用memcpy之类的:

memcpy(&mac, (unsigned char)macAddress, sizeof mac);  

或像mac = (unsigned char *)macAddress之类的其他方式等等,但对我来说没有任何效果 有没有正确的方法如何转换它没有任何精度损失?

1 个答案:

答案 0 :(得分:2)

您希望将mac地址的十六进制数字(即字符串" 00")转换为字节值(即值0)。而memcpy则复制字符串数字的值(即' 0'是48或0x30)。

您可以使用sscanf进行正确的转化。

至少在Linux上,您还可以使用函数ether_aton。请参见手册页。