可能重複:
Print an int in binary representation using C如何打印short int類型C對象的字節表示
我將如何打印short int類型的字節表示,在雙C.
正如讓我說我有一個函數display_shortInt,我將如何使它打印短int的字節表示?我是C新手,謝謝你!
可能重複:
Print an int in binary representation using C如何打印short int類型C對象的字節表示
我將如何打印short int類型的字節表示,在雙C.
正如讓我說我有一個函數display_shortInt,我將如何使它打印短int的字節表示?我是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.
這將打印形成值的字節,以十六進制表示,每個字節兩個字符。
例如,在小端機器中,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]);
如果你只是想看看它是怎麼寫的(大型):
printf("%04x", val);
但是請注意,如果'char'被簽名(並且它在許多體系結構中),並且字節如果大於0x80,則會得到一些有趣的值。 – rodrigo