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

如何将文件中的大端序(Big Endian)转换为小端序(Little Endian)?

大端序转小端序脚本优化

我需要将文件中的大端序(Big Endian)数据转换为小端序(Little Endian)。

示例数据

输入数据

000000000000200200DC082DED2DEDED051F4032400454036A9891D53C370101EA0A

期望输出

0AEA0101373CD591986A0354044032401F05EDED2DED2D08DC000220000000000000

现有问题

我找到的Shell脚本仅支持单次转换(比如处理单个字符串或单行输入),无法直接处理文件中的多行数据:

#!/bin/bash

# check 1st arg or stdin
if [ $# -ne 1 ]; then
if [ -t 0 ]; then
  exit
else
v=`cat /dev/stdin`
fi
else
v=$1
fi

i=${#v}

while [ $i -gt 0 ]
do
i=$[$i-2]
echo -n ${v:$i:2}
done

优化后的脚本

下面是修改后的脚本,支持处理文件(多行输入),每行独立进行端序转换:

#!/bin/bash

# 处理输入:支持命令行参数指定文件,或从标准输入读取
input_source="${1:-/dev/stdin}"

# 逐行处理
while IFS= read -r line; do
    # 跳过空行
    [[ -z "$line" ]] && continue
    # 移除行内可能的空格(如果有的话)
    line=$(echo "$line" | tr -d '[:space:]')
    len=${#line}
    result=""
    # 从末尾开始每两位截取拼接
    while [ $len -gt 0 ]; do
        len=$((len - 2))
        result="${result}${line:$len:2}"
    done
    echo "$result"
done < "$input_source"

使用方法

  1. 保存脚本为endian_convert.sh,赋予执行权限:
chmod +x endian_convert.sh
  1. 处理单个字符串:
./endian_convert.sh <<< "000000000000200200DC082DED2DEDED051F4032400454036A9891D53C370101EA0A"
  1. 处理文件(比如data.txt):
./endian_convert.sh data.txt
  1. 从管道读取输入:
cat data.txt | ./endian_convert.sh

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:40:13