我有字符的数组:如何从数字的阵列创建具有十六进制字符阵列
char macChars=[12];
的它的内容例如macChars [0] = 53,macChars [1] = 66 ... 我需要这些数字转换为十六进制字符,所以我想有另一个数组:
macCharsHex[0]=5 //value 53 in hex
macCharsHex[1]=B //value 66 in hex
谢谢。例如
我有字符的数组:如何从数字的阵列创建具有十六进制字符阵列
char macChars=[12];
的它的内容例如macChars [0] = 53,macChars [1] = 66 ... 我需要这些数字转换为十六进制字符,所以我想有另一个数组:
macCharsHex[0]=5 //value 53 in hex
macCharsHex[1]=B //value 66 in hex
谢谢。例如
它们已经被转换,因为C中的字符由它们对应的字符代码表示。
因此,就将数组存储在数组中而言,您不需要做任何事情,并且如果要在打印或执行类似操作时使“5”和“B”正确显示,正确的打印功能(putchar,带%c的printf等)。
使用sprintf()
。请注意,如果您有12个字节,则需要24 + 1个字节用于字符串表示,因为每个字节需要两个字符(十六进制),然后是终止'\ 0'字节。
我怀疑我根本不理解这个问题,尤其是没有给出的例子。
如果你有macChars[0] == 53
,这是十六进制0x35,那么我会期望得到maxCharsHex[0] == '3'
和macCharsHex[1] == '5'
第一char
后已经转换。这是像这样做有sprintf()
:
sprintf(maxCharsHex, "%02x", (int) macChars[0] & 0xff);
演面具是要在安全方面有符号的字符。
它不会做反向转换吗? – asaelr 2012-01-27 11:36:21
假设ASCII,您的示例已经包含您希望它们包含的值。所以你不需要转换任何东西。也许你想打印它们?
我的不好,可怕的问题标题选择。 – DixieFlatline 2012-01-27 11:39:12
但目前还不清楚你想要什么。如果macChars [1] == 66,macCharsHex [1]需要变成什么? – 2012-01-27 12:40:48
这应该工作:
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';'? – Mat 2012-01-27 11:32:51