如何使用数组数组创建带有十六进制字符的数组

时间:2012-01-27 11:29:43

标签: c char hex

我有一系列字符:

char macChars=[12];

它的内容是例如macChars [0] = 53,macChars [1] = 66 ... 我需要将这些数字转换为十六进制字符,所以我会有另一个数组:

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

谢谢。

4 个答案:

答案 0 :(得分: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);

对于签名字符,演员和面具应该是安全的。

答案 1 :(得分:1)

假设ASCII,您的示例已包含您希望它们包含的值。所以你不必转换任何东西。也许你想打印它们?

答案 2 :(得分: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

答案 3 :(得分:0)

它们已被转换,因为C中的字符由相应的字符代码表示。

因此,就存储在数组中的内容而言,您无需做任何事情,如果您希望在打印或执行类似操作时正确显示“5”和“B”,则需要使用正确的打印功能(putchar,带有%c的printf等)。