我需要将一个int转换成一个2字节的十六进制值,然后用C存储在一个char数组中。我该怎么做呢?
发布于 2010-11-03 17:38:09
如果你被允许使用库函数:
int x = SOME_INTEGER;
char res[5]; /* two bytes of hex = 4 characters, plus NULL terminator */
if (x <= 0xFFFF)
{
sprintf(&res[0], "%04x", x);
}
您的整数可能包含四位以上的十六进制数字的数据,因此首先进行检查。
如果您不允许使用库函数,请手动将其划分为nybbles:
#define TO_HEX(i) (i <= 9 ? '0' + i : 'A' - 10 + i)
int x = SOME_INTEGER;
char res[5];
if (x <= 0xFFFF)
{
res[0] = TO_HEX(((x & 0xF000) >> 12));
res[1] = TO_HEX(((x & 0x0F00) >> 8));
res[2] = TO_HEX(((x & 0x00F0) >> 4));
res[3] = TO_HEX((x & 0x000F));
res[4] = '\0';
}
发布于 2010-11-03 17:36:23
假设int为32位;
最简单的方法:只使用sprintf()
int intval = /*your value*/
char hexval[5];
sprintf(hexval,"%0x",intval);
现在通过hexval3使用十六进制;如果希望将其用作以空结尾的字符串,则添加hexval[4]=0;
发布于 2010-11-04 15:37:43
我想出了一种快速的方法,我测试了一下,它起作用了。
int value = 11;
array[0] = value >> 8;
array[1] = value & 0xff;
printf("%x%x", array[0], array[1]);
结果是:
000B
它是十六进制的11。
https://stackoverflow.com/questions/4085612
复制相似问题