shell判断大小端序


总结:

大端是高字节存放到内存的低地址

小端是高字节存放到内存的高地址


说结论:我本地vagrant虚拟机是小端序的

方法一

echo -n I | od -o | head -n1 | cut -f2 -d" " | cut -c6
  • 输出:1为小端模式,0为大端模式;

  • 解析:od命令的作用为将指定内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示;

[vagrant@vm-node1:tmp]$ echo -n I | od -o | head -n1 | cut -f2 -d" " | cut -c6
1


方法二

echo -n I | od -o | head -n1 | awk '{print $2}'cut -c6
  • 输出:1为小端模式,0为大端模式;

  • 解析:awk命令为文本处理。

[vagrant@vm-node1:tmp]$ echo -n I | od -o | head -n1 | awk '{print $2}'| cut -c6
1


方法三

lscpu | grep -i byte
  • 输出:Byte Order:            Little Endian;

  • 解析:grep -i 为不区分大小写匹配;

  • 注意:在低版本的Linux可能不支持lscpu命令。

[vagrant@vm-node1:tmp]$ lscpu | grep -i byte
Byte Order:                      Little Endian


方法四

dpkg-architecture | grep -i end
  • 输出:

      DEB_BUILD_ARCH_ENDIAN=little

      DEB_HOST_ARCH_ENDIAN=little

      DEB_TARGET_ARCH_ENDIAN=little

  • 解析:dpkg-architecture命令是列出dpkg打包的一些环境参数;

[vagrant@vm-node1:tmp]$ dpkg-architecture | grep -i end
DEB_BUILD_ARCH_ENDIAN=little
DEB_HOST_ARCH_ENDIAN=little
DEB_TARGET_ARCH_ENDIAN=little