2017-04-20 92 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工作正常對我來說,謝謝你的建議! –

相關問題