2012-01-27 70 views
0

我有字符的數組:如何從數字的陣列創建具有十六進制字符陣列

char macChars=[12]; 

的它的內容例如macChars [0] = 53,macChars [1] = 66 ... 我需要這些數字轉換爲十六進制字符,所以我想有另一個數組:

macCharsHex[0]=5 //value 53 in hex 
macCharsHex[1]=B //value 66 in hex 

謝謝。例如

+0

我有一個很難理解你的問題。 「轉換爲十六進制字符」並不意味着太多。你的意思是'arr [0] ='B';'? – Mat 2012-01-27 11:32:51

回答

0

它們已經被轉換,因爲C中的字符由它們對應的字符代碼表示。

因此,就將數組存儲在數組中而言,您不需要做任何事情,並且如果要在打印或執行類似操作時使「5」和「B」正確顯示,正確的打印功能(putchar,帶%c的printf等)。

1

使用sprintf()。請注意,如果您有12個字節,則需要24 + 1個字節用於字符串表示,因爲每個字節需要兩個字符(十六進制),然後是終止'\ 0'字節。

我懷疑我根本不理解這個問題,尤其是沒有給出的例子。

如果你有macChars[0] == 53,這是十六進制0x35,那麼我會期望得到maxCharsHex[0] == '3'macCharsHex[1] == '5'第一char後已經轉換。這是像這樣做有sprintf()

sprintf(maxCharsHex, "%02x", (int) macChars[0] & 0xff); 

演面具是要在安全方面有符號的字符。

+0

它不會做反向轉換嗎? – asaelr 2012-01-27 11:36:21

1

假設ASCII,您的示例已經包含您希望它們包含的值。所以你不需要轉換任何東西。也許你想打印它們?

+0

我的不好,可怕的問題標題選擇。 – DixieFlatline 2012-01-27 11:39:12

+0

但目前還不清楚你想要什麼。如果macChars [1] == 66,macCharsHex [1]需要變成什麼? – 2012-01-27 12:40:48

1

這應該工作:

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 
相關問題