测试代码:
保存下列代码为 main.cpp 文件
#include <stdio.h>
#include <arpa/inet.h>
int main(int argc, char* argv) {
int n = 260;
int r = n >> 8;
int l = n << 8;
printf("shift l=%d, r=%d\n", l, r);
l = htons(n);
r = ntohs(n);
printf("htons %d, ntohs %d, box %d\n", l, r, (unsigned char)n);
return 0;
}
GCC编译
> # gcc main.cpp
执行测试程序:
输出内容:
shift l=66560, r=1
htons 260, ntohs 260, box 4
可以得出:
1、左右移动位运算,SHL、SHR 与小端字节序保持一致(不影响)
2、大字节数强制转为小字节数,与小端字节序保持一致
S390X指令集平台为大端字节序列(高位在前,低位在后)反之为小端字节序列。