2012-01-27 71 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 
相关问题