如何在Python 3中从二进制转换为字节到十六进制?

2024-04-24 06:59:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个程序,将两个十六进制字符串转换为字节,并将字节转换为二进制。一旦进入二进制,我想对它们执行异或转置。这已经完成了,我想把二进制字符串转换回字节,然后再转换成十六进制。我已经知道答案应该是什么了,这只是一个从a到B的问题

我目前掌握的代码如下:

input1 = "1c0111001f010100061a024b53535009181c"
input2 = "686974207468652062756c6c277320657965"

target = "746865206b696420646f6e277420706c6179"

d = conversions.hexconvert(input1)
e = conversions.hexconvert(input2)

print(d)
print(e)

f = bitstring.BitArray(d)
g = bitstring.BitArray(e)

xor1 = f.bin
xor2 = g.bin

print("xor1 is", xor1)
print("xor2 is", xor2)

xor1, xor2 = xor2, xor1

print("xor1 is now:", xor1)

函数“hexconvert”由以下代码组成:

import codecs

def hexconvert(input):
    output = codecs.decode(input, 'hex')
    return(output)

我的代码目前显示如下:

b'\x1c\x01\x11\x00\x1f\x01\x01\x00\x06\x1a\x02KSSP\t\x18\x1c'
b"hit the bull's eye"
xor1 is    : 000111000000000100010001000000000001111100000001000000010000000000000110000110100000001001001011010100110101001101010000000010010001100000011100
xor2 is    : 011010000110100101110100001000000111010001101000011001010010000001100010011101010110110001101100001001110111001100100000011001010111100101100101
xor1 is now: 011010000110100101110100001000000111010001101000011001010010000001100010011101010110110001101100001001110111001100100000011001010111100101100101

到目前为止一切都很好。我想知道在这段代码的末尾可以添加什么,将xor1转换为字节,然后转换为十六进制,这样我就可以将它与应该得到的结果进行比较。我一直在想如何使用struct、binasci,甚至是bitstring,但我一无所获。非常感谢所有的建议。

如果有人能建议如何提高代码的效率,那也太好了。

非常感谢提前!


Tags: 字符串代码字节is二进制printbitarraybitstring