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]需要变成什么?