是否有一个将整数转换为十六进制或二进制的C库?

时间:2012-03-09 15:43:41

标签: c binary hex

是否有一个库函数接受一个整数并将其转换为单字节十六进制或二进制数?

例如,如果我将64的输入传递给它,则会输出0x40

4 个答案:

答案 0 :(得分:2)

int是int,无论是0x40还是64;两者的数据表示完全相同(10000000 ... 011111111)。如果你问如何在char数组中表示它,你可以使用sprintf。最简单的方法是sprintf(buf, "%#x", 64)

答案 1 :(得分:1)

对于十六进制数字,您可以使用sprintf

char buff[80];
sprintf(buff, "0x%02x", 64);

答案 2 :(得分:1)

在内部,整数已经表示为二进制。您可以使用%x格式字符串显示一个十六进制数字(%#02x最适合您的示例)。

有关二进制文件,请参阅this question,其中没有内置格式字符串说明符。

答案 3 :(得分:1)

在C int type's size depends upon implementation。通常,它将是4个字节长,因此不可能在不丢失重要信息的情况下存储在单个字节中。

如果您使用charint8_t,那么您将拥有一个字节。字节在内部是二进制的,并且总是如此。因此,只要你想用你的字节做任何,你就必须用二进制来做。

十六进制vs二进制vs基数10是显示决策。因此,如果您接受这些作为输入,则必须将字符串转换为单个字节以便存储在内存中。当您显示它们时,您将必须转换为所需的显示格式。

使用sprintf可以显示。使用strtol进行输入。