2017-04-20 60 views
0

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

我试了使用memcpy像:

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

或相同的另一方式像mac = (unsigned char *)macAddress等,但没有工作对我来说很好。
有没有任何正确的方法如何转换它没有任何精度损失?

+3

'(unsigned char)macAddress' ??是什么让你认为你需要或应该将一个指针指向'unsigned char'? – UnholySheep

+0

'memcpy'是一个C函数。你在哪[mcve],你使用哪种语言?删除不相关语言的标签。 – Olaf

+0

什么是在macAddress中?它是一个像“00:10:6f:16:01:b3”这样冒号的字符串吗? – stark

回答

2

您希望将MAC地址的十六进制数字(即字符串“00”)转换为字节值(即值0)。 memcpy代替复制字符串数字的值(即“0”是48或0x30)。

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

至少在Linux上,您还可以使用函数ether_aton。查看手册页。

+0

sscanf工作正常对我来说,谢谢你的建议! –

相关问题