猿问

将 str 解释为十六进制字符序列

这对你有用吗?


import numpy as np                                                                                                                                                                     


a = np.array([0, 1, 1, 0, 0, 1, 0])                                                                                                                                                    

b = np.array([1, 2, 3, 4, 5, 6, 7])                                                                                                                                                    


print(np.array([a*b,(1-a)*b]))

[[0 2 3 0 0 6 0]


[1 0 0 4 5 0 7]]我正在开发一个校验和函数,其中 4 个字节被转换为下面列出的十六进制字符串(例如'00ABCDEF'):


packet = "004100ff"

checksum = 0

for el in packet:

    checksum ^= ord(el)

print (hex(checksum))

目前,获得正确校验和(0xbe)的唯一方法是手动将字符串重写为 packet = '\x00\x41\x00\xff' ,这无法自动完成。


我怎样才能让python解释字符串,就好像每2个字符都是十六进制字节来执行校验和?


一只斗牛犬
浏览 131回答 2
2回答

回首忆惘然

我怎样才能让python解释字符串,就好像每2个字符都是十六进制字节来执行校验和?用于bytes.fromhex()将 解释str为一系列十六进制数字:>>> packet = "004100ff">>> bytes.fromhex(packet)b'\x00A\x00\xff'还要注意,迭代会给bytes你int,所以不再需要ord():>>> for el in bytes.fromhex(packet): print(el)  # or list(bytes.fromhex(packet))... 0650255

米琪卡哇伊

如果我正确理解你的问题。这应该有效。packet = "004100ff"checksum = 0bytes_string = [packet[i:i+2] for i in range(0, len(packet), 2)]for byte_string in bytes_string:    checksum ^= int(byte_string, 16)print(hex(checksum))
随时随地看视频慕课网APP

相关分类

Python
我要回答