46 lines
1.4 KiB
Markdown
46 lines
1.4 KiB
Markdown
|
# Linux 命令判断大小端序
|
|||
|
|
|||
|
笔者在开发Linux应用程序时,由于判断大小端序的问题,使用的方法是用C语言判断,方法是可以判断得到系统是什么端序,但是太麻烦了。笔者是比较懒的人,不想写那么多代码,想一句命令就解决端序判断的问题。
|
|||
|
|
|||
|
想了想,通过理解端序的背后原理,使用Shell命令来判断端序的问题。原来方法还是挺多的。笔者系统端序为小端序模式。
|
|||
|
|
|||
|
## 方法一
|
|||
|
|
|||
|
```bash
|
|||
|
echo -n I | od -o | head -n1 | cut -f2 -d" " | cut -c6
|
|||
|
```
|
|||
|
|
|||
|
* 输出:1为小端模式,0为大端模式;
|
|||
|
* 解析:od命令的作用为将指定内容以八进制、十进制、十六进制、浮点格式或ASCII编码字符方式显示;
|
|||
|
|
|||
|
## 方法二
|
|||
|
|
|||
|
```bash
|
|||
|
echo -n I | od -o | head -n1 | awk '{print $2}'| cut -c6
|
|||
|
```
|
|||
|
|
|||
|
* 输出:1为小端模式,0为大端模式;
|
|||
|
* 解析:awk命令为文本处理。
|
|||
|
|
|||
|
## 方法三
|
|||
|
|
|||
|
```bash
|
|||
|
lscpu | grep -i byte
|
|||
|
```
|
|||
|
|
|||
|
* 输出:Byte Order: Little Endian;
|
|||
|
* 解析:grep -i 为不区分大小写匹配;
|
|||
|
* 注意:在低版本的Linux可能不支持lscpu命令。
|
|||
|
|
|||
|
## 方法四
|
|||
|
|
|||
|
```bash
|
|||
|
dpkg-architecture | grep -i end
|
|||
|
```
|
|||
|
|
|||
|
* 输出:
|
|||
|
* DEB_BUILD_ARCH_ENDIAN=little
|
|||
|
* DEB_HOST_ARCH_ENDIAN=little
|
|||
|
* DEB_TARGET_ARCH_ENDIAN=little
|
|||
|
* 解析:dpkg-architecture命令是列出dpkg打包的一些环境参数;
|