我有字符的數組:如何從數字的陣列創建具有十六進制字符陣列
char macChars=[12];
的它的內容例如macChars [0] = 53,macChars [1] = 66 ... 我需要這些數字轉換爲十六進制字符,所以我想有另一個數組:
macCharsHex[0]=5 //value 53 in hex
macCharsHex[1]=B //value 66 in hex
謝謝。例如
我有字符的數組:如何從數字的陣列創建具有十六進制字符陣列
char macChars=[12];
的它的內容例如macChars [0] = 53,macChars [1] = 66 ... 我需要這些數字轉換爲十六進制字符,所以我想有另一個數組:
macCharsHex[0]=5 //value 53 in hex
macCharsHex[1]=B //value 66 in hex
謝謝。例如
它們已經被轉換,因爲C中的字符由它們對應的字符代碼表示。
因此,就將數組存儲在數組中而言,您不需要做任何事情,並且如果要在打印或執行類似操作時使「5」和「B」正確顯示,正確的打印功能(putchar,帶%c的printf等)。
使用sprintf()
。請注意,如果您有12個字節,則需要24 + 1個字節用於字符串表示,因爲每個字節需要兩個字符(十六進制),然後是終止'\ 0'字節。
我懷疑我根本不理解這個問題,尤其是沒有給出的例子。
如果你有macChars[0] == 53
,這是十六進制0x35,那麼我會期望得到maxCharsHex[0] == '3'
和macCharsHex[1] == '5'
第一char
後已經轉換。這是像這樣做有sprintf()
:
sprintf(maxCharsHex, "%02x", (int) macChars[0] & 0xff);
演面具是要在安全方面有符號的字符。
它不會做反向轉換嗎? – asaelr 2012-01-27 11:36:21
假設ASCII,您的示例已經包含您希望它們包含的值。所以你不需要轉換任何東西。也許你想打印它們?
我的不好,可怕的問題標題選擇。 – DixieFlatline 2012-01-27 11:39:12
但目前還不清楚你想要什麼。如果macChars [1] == 66,macCharsHex [1]需要變成什麼? – 2012-01-27 12:40:48
這應該工作:
char hex[255] = {0}; // Varible to hold the hex value
int dec = 1234; // Decimal number to be converted
sprintf(hex,"%X", dec);
printf("%s", hex); // Print hex value
我有一個很難理解你的問題。 「轉換爲十六進制字符」並不意味着太多。你的意思是'arr [0] ='B';'? – Mat 2012-01-27 11:32:51