可能重复:
使用 C 以二进制表示形式打印 int
我将如何打印一个短整数的字节表示,并在 C 中加倍。
假设我有一个函数 display_shortInt,我将如何让它打印一个短整数的字节表示?我是C新手,谢谢!
可能重复:
使用 C 以二进制表示形式打印 int
我将如何打印一个短整数的字节表示,并在 C 中加倍。
假设我有一个函数 display_shortInt,我将如何让它打印一个短整数的字节表示?我是C新手,谢谢!
那这个呢?
void print_bytes(void *p, size_t len)
{
size_t i;
printf("(");
for (i = 0; i < len; ++i)
printf("%02X", ((unsigned char*)p)[i]);
printf(")");
}
void print_short(short x)
{
print_bytes(&x, sizeof(x));
}
void print_double(double x)
{
print_bytes(&x, sizeof(x));
}
//etc.
这将以十六进制形式打印形成值的字节,每个字节两个字符。
例如,在 little-endian 机器中,print_short(42)
将打印(2A00)
. 在大端机器中它将是(002A)
.
没有直接的方法(即使用 printf 或其他标准库函数)来打印它。您将不得不编写自己的函数。
void printbits(unsigned int v) {
for (; v; v >>= 1)
putchar('0' + (v & 1));
}
如果您想查看它在内存中的组织方式(取决于架构):
short val = 0x1234;
printf( "%02x%02x", ((char*)&val)[0], ((char*)&val)[1] );
If you just want to see how it is written (big-endian):
printf( "%04x", val );