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

如何在Bash中对Base16字符串执行大小端交换并完成Base16解码

Bash下实现Base16字符串大小端交换后转预期结果的方案

所有方案均使用Linux默认自带核心工具,无额外外部依赖,符合要求。

方案1:固定2字节(4位Base16输入)最简实现

纯Bash内置功能完成,无需调用任何外部工具:

#!/bin/bash
# 输入Base16字符串
input_hex="401f"
# 交换2字节大小端:拼接后2位hex + 前2位hex
swapped_hex="${input_hex:2:2}${input_hex:0:2}"
# 直接通过Bash算术扩展完成十六进制转十进制
result=$((0x${swapped_hex}))
echo ${result}

运行后直接输出8000。

方案2:通用16位对齐Base16输入处理

适合处理更长的、按2字节对齐的Base16字符串,使用默认自带的xxd、od工具:

#!/bin/bash
input_hex="401f"
# 流程:Base16转二进制 → 按2字节为单位解析为无符号短整型(自动处理大小端转换)→ 输出结果
result=$(echo -n "${input_hex}" | xxd -r -p | od -An -tu2 | tr -d '[:space:]')
echo ${result}

方案3:POSIX兼容awk实现

适配精简POSIX环境,无需依赖Bash特性:

echo "401f" | awk '{
    # 拆分输入hex为两个字节对应的子串
    first_byte = substr($0, 1, 2)
    second_byte = substr($0, 3, 2)
    # 交换字节后转十进制输出
    print strtonum("0x" second_byte first_byte)
}'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 14:33:01