C 如何从数字数组创建十六进制字符数组

C 如何从数字数组创建十六进制字符数组,c,char,hex,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 谢谢。例如,使用sprintf()。请注意,它将占用更多空间,如果您有12个字节,那么字符串表示将需要24+1个字节,因为每个字节需要两个十六进制字符,

我有一组字符:

char macChars=[12];
它的内容是,例如macChars[0]=53,macChars[1]=66。。。 我需要将这些数字转换为十六进制字符,这样我就有了另一个数组:

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

例如,使用
sprintf()
。请注意,它将占用更多空间,如果您有12个字节,那么字符串表示将需要24+1个字节,因为每个字节需要两个十六进制字符,然后是终止的'\0'-字节

我怀疑我根本不理解这个问题,尤其是给出的例子

如果您有
macChars[0]==53
,十六进制为0x35,那么在第一个
char
转换后,我希望得到
maxCharsHex[0]='3'
macCharsHex[1]='5'
。使用
sprintf()
也可以这样做:

强制转换和掩码对于签名字符是安全的。

例如,使用
sprintf()
。请注意,它将占用更多空间,如果您有12个字节,那么字符串表示将需要24+1个字节,因为每个字节需要两个十六进制字符,然后是终止的'\0'-字节

我怀疑我根本不理解这个问题,尤其是给出的例子

如果您有
macChars[0]==53
,十六进制为0x35,那么在第一个
char
转换后,我希望得到
maxCharsHex[0]='3'
macCharsHex[1]='5'
。使用
sprintf()
也可以这样做:


强制转换和掩码对于有符号字符来说是安全的。

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

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

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


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

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

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

这应该可以:

    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
这应该起作用:

    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'?我很难理解你的问题。“转换成十六进制字符”没有什么意义。你的意思是
arr[0]='B'?它不会进行反向转换吗?它不会进行反向转换吗?我的问题标题选择糟糕透顶。但仍然不清楚你想要什么。如果macChars[1]==66,macCharsHex[1]需要成为什么?我对问题标题的选择糟糕透顶。但仍然不清楚你想要什么。如果macChars[1]==66,macCharsHex[1]需要变成什么?