我正在尝试在 Bash 或任何其他 shell 中反转十六进制数字。
例如,我想反转十六进制数4BF8E,答案应该是71FD2,即按位反转。
echo 4BF8E | rev | tr '0123456789ABCDEF' '084C2A6E195D3B7F'
解释:
使用以下算法:
一个python解决方案,(假设您需要字节对齐):
def bin(a):
"""
For python 2 this is needed to convert a value to a bitwise string
in python 3 there is already a bin built in
"""
s=''
t={'0':'0000', '1':'0001', '2':'0010', '3':'0011',
'4':'0100', '5':'0101', '6':'0110', '7':'0111',
'8':'1000', '9':'1001', 'a':'1010', 'b':'1011',
'c':'1100', 'd':'1101', 'e':'1110', 'f':'1111',
}
for c in hex(a)[2:]:
s+=t[c]
return s
def binrevers(hex):
IntForm = int(hex, 16)
BinForm = bin(IntForm)
rBin = BinForm[::-1]
Val = int(rBin, 2)
return "%x" % Val
以交互方式尝试:
>>> binrevers("4BF8E")
'71fd2'
>>>
如果您需要从 shell 执行此操作,则可以通过添加到 .py 文件的末尾将其扩展为脚本:
if __name__ == "__main__":
import sys
for i in sys.argv[1:]:
print i, binrevers(i)