我想反轉一個十六進制值。但結果是錯誤的。如何在C中反轉整數?
#include <stdio.h>
#include <stdint.h>
#include <netinet/in.h>
int main(void)
{
uint32_t acc = 0xBBD1;
printf("0x%X", htons(~acc)); // prints 0x2E44
}
讓我們做手工的反轉:
0xBBD1 = 1011 1011 1101 0001
~1011 1011 1101 0001 =
0100 0100 0010 1110
0100 0100 0010 1110 = 0x442E
這意味着,代碼應該實際打印0x442E
,而不是0x2E44
。
我的代碼有什麼問題?
看看bit endianness。 –
@cad這是您所做的重大修改。國際海事組織,它失去了一些OP的原始問題。 – chux
@chux爲什麼會有損失? – Downvoter