#!/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
echo
For e.g. you could save this script as endian.sh and make it executable with:
6条答案
按热度按时间mlnl4t2r1#
只是不得不这样做...但从十进制到小端...适应这里:
对于无符号整数的任意大小的十六进制表示形式,可实现所需的结果。
(h/t“tac -rs”mestreLion,非常好!)
qlckcl4x2#
对于32位地址,假设它是零填充的:
bfhwhh0e3#
根据Karoly的回答,你可以使用下面的脚本,读取一个参数或管道输入:
For e.g. you could save this script as endian.sh and make it executable with:
然后:
为您提供:
对于不同长度的字符串:
结果将是:
还可以为您提供:
dgenwo3n4#
这适用于dash(以及许多其他shell):
结果应为“0x78563412”
siotufzp5#
为了回应Freewind的评论请求,我在hutheano's great answer的基础上编写了自己的bash脚本,并在下面提供了一个压缩版本,完整的脚本可以在here下载。
以下实现考虑了奇数长度字符串、
0x
或\x
前缀以及多种输出格式,可按如下方式使用:be2le bash脚本
kx5bkwkv6#
此脚本用于翻转16位数据。