我试图在bash或任何其他shell中反转十六进制数。 例如,我想反转十六进制数 4BF8E ,答案应该是 71FD2 ,即按位反转。
答案 0 :(得分:3)
echo 4BF8E | rev | tr '0123456789ABCDEF' '084C2A6E195D3B7F'
说明:
答案 1 :(得分:0)
使用以下算法:
答案 2 :(得分:0)
一个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)