芜湖不芜
python中要进行位运算,关键是2个算子的类型和长度都必须相同。B类型的数组每个元素是1字节长的int,那么你把你的【十六进制字符串】也转换成【1字节长的int组成的序列】就行了。最快捷的方法,就是直接转换成字节串。
>>> import array
>>> my_arr = array.array('B', range(32)) #一个B类型的数组
>>> my_arr
array('B', [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31])
>>> hex_str = '68656c6c6f20776f726c6421' #你手上的十六进制字符串
>>> hex_bytes = bytes.fromhex(hex_str) #将字符串转换成字节串
>>> hex_bytes #字节串的本质就是【单字节整数】组成的数组
b'hello world!'
>>> hex_bytes[0] ^ my_arr[0] #元素间可以正常进行位运算了
104