我正努力将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
之类的其他方式等等,但对我来说没有任何效果
有没有正确的方法如何转换它没有任何精度损失?
答案 0 :(得分:2)
您希望将mac地址的十六进制数字(即字符串" 00")转换为字节值(即值0)。而memcpy
则复制字符串数字的值(即' 0'是48或0x30)。
您可以使用sscanf
进行正确的转化。
至少在Linux上,您还可以使用函数ether_aton
。请参见手册页。