2

可能重复:
使用 C 以二进制表示形式打印 int

我将如何打印一个短整数的字节表示,并在 C 中加倍。

假设我有一个函数 display_shortInt,我将如何让它打印一个短整数的字节表示?我是C新手,谢谢!

4

3 回答 3

7

那这个呢?

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).

于 2012-09-11T22:17:13.423 回答
2

没有直接的方法(即使用 printf 或其他标准库函数)来打印它。您将不得不编写自己的函数。

void printbits(unsigned int v) {
   for (; v; v >>= 1) 
      putchar('0' + (v & 1));
}
于 2012-09-11T22:14:24.820 回答
2

如果您想查看它在内存中的组织方式(取决于架构):

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 );
于 2012-09-11T22:48:35.073 回答