Printf和十六进制值

mam*_*don 2 c c++ string formatting printf

所以,我的类型为__be16(2个字节).在十六进制中,该值表示为十进制的0x0800或2048.(16 ^ 2*8)

所以,当我打印这个; 我这样做:

printf("%04X", value); //__be16 value;
                      //Print a hex value of at least 4 characters, no padding.
Run Code Online (Sandbox Code Playgroud)

输出:0008

printf("%i", value); //Print an integer.
Run Code Online (Sandbox Code Playgroud)

输出:8

我应该分别得到0800和2048,我做错了什么?

asv*_*kau 8

我猜value是8 :-)

你是在小端机器上,比如x86吗?我猜be16你的意思是你的意思是该值是大端,你需要交换字节.