所以我有一個包含十六進制值的位元組陣列的字串。
我想弄清楚如何從字串回到原始位元組陣列。
我正在使用基于 Arduino 的板。
簡單地說,我想把這個:
char addr3[47] = "0x28, 0xB6, 0x4C, 0x4E, 0x0D, 0x00, 0x00, 0x86";
回到這個:
byte addr2[8] = {0x28, 0xB6, 0x4C, 0x4E, 0x0D, 0x00, 0x00, 0x86};
感謝您的幫助。
編輯,這是我按照答案/評論提出的解決方案:
從...開始:
char addr3[47] = "0x28, 0xB6, 0x4C, 0x4E, 0x0D, 0x00, 0x00, 0x86";
我通過這個運行字串:
sscanf(addr3, "%x", &r1);
sscanf(addr3, "%*s %x", &r2);
sscanf(addr3, "%*s %*s %x", &r3);
sscanf(addr3, "%*s %*s %*s %x", &r4);
sscanf(addr3, "%*s %*s %*s %*s %x", &r5);
sscanf(addr3, "%*s %*s %*s %*s %*s %x", &r6);
sscanf(addr3, "%*s %*s %*s %*s %*s %*s %x", &r7);
sscanf(addr3, "%*s %*s %*s %*s %*s %*s %*s %x", &r8);
byte addr[8] = {r1,r2,r3,r4,r5,r6,r7,r8};
然后我們得到:
byte addr[8] = 28B64C4ED0086
雖然這不是我正在尋找的確切格式,但它會起作用。
uj5u.com熱心網友回復:
為此,您需要決議字串并將各個值轉換為位元組。您可以使用 c 庫中的 sscanf 函式執行此操作。不知道arduino有沒有sscanf函式的實作。但我會先研究一下。如果沒有,那么您將不得不撰寫一個函式來讀取十六進制字串的每個字符并將其轉換為 4 位等效值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/317700.html
上一篇:如何撰寫一個接受字串并回傳該字串中的第一個單詞的函式
下一篇:如何在字串中的特定文本后插入值
