You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用纯Linux/Shell命令实现4字节小端序整数二进制输出?

纯Shell/Linux命令实现4字节小端序输出

当然可以,以下是几种简便的实现方式:

方法1:Bash内置算术+printf

利用Shell位运算拆分整数的四个字节,再通过printf输出对应二进制字节:

n=$1
printf '\x%02x\x%02x\x%02x\x%02x' $((n & 0xff)) $(((n >> 8) & 0xff)) $(((n >> 16) & 0xff)) $(((n >> 24) & 0xff))

使用示例:bash convert.sh 123,输出即为整数123对应的4字节小端序二进制数据。

方法2:Awk实现

Awk支持二进制输出,通过位运算拆分字节后用printf输出:

echo "$1" | awk '{
    num = $0 + 0
    printf "%c%c%c%c", num&0xff, (num>>8)&0xff, (num>>16)&0xff, (num>>24)&0xff
}'

使用示例:echo 123 | awk ...(直接执行上述语句),或保存为脚本运行。

方法3:printf+sed+xxd组合

先将整数转为8位十六进制字符串,反转字节顺序后再转回二进制:

printf "%08x" "$1" | sed 's/\(..\)\(..\)\(..\)\(..\)/\4\3\2\1/' | xxd -r -p

解释:

  • printf "%08x" 将十进制整数转为8位十六进制(大端顺序,比如123对应0000007b)
  • sed 反转四个两位十六进制段,得到小端顺序的十六进制字符串7b000000
  • xxd -r -p 将十六进制字符串还原为二进制数据

注意:以上方法默认处理无符号32位整数(范围0~4294967295),若需处理有符号整数,调整位运算逻辑即可。

内容的提问来源于stack exchange,提问作者Vadim Kantorov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 22:20:06