我有一系列字符:
char macChars=[12];
它的内容是例如macChars [0] = 53,macChars [1] = 66 ... 我需要将这些数字转换为十六进制字符,所以我会有另一个数组:
macCharsHex[0]=5 //value 53 in hex
macCharsHex[1]=B //value 66 in hex
谢谢。
答案 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等)。