【发布时间】:2015-11-16 23:40:30
【问题描述】:
我正在尝试反转十六进制值。然而结果是错误的。
#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。
我的代码有什么问题?
【问题讨论】:
-
看看位字节序。
-
@cad 这是您所做的重要编辑。 IMO,它失去了一些 OP 的原始问题。
-
@chux 为什么会出现亏损?