试图将字节数组中的字节分成两个半字节

2024-10-03 06:29:20 发布

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

我得到一个字节数组,我试图测试第一个字节的前4位是否等于4。否则返回错误代码2。你知道吗

我曾经尝试过从数组中取出字节并拆分十六进制值,但是我不太确定如何做到这一点,因为我对处理字节还不熟悉。你知道吗

def basicpacketcheck (pkt):
    version, hdrlen = bytes(pkt[0:1])
    if version != 4:
        return 2

这是我的密码

pkt[0:1]

给了我

bytearray(b'E')

我需要把E(翻译成0x45)分成0x4和0x5。你知道吗


Tags: 密码returnif字节bytesversiondef数组
1条回答
网友
1楼 · 发布于 2024-10-03 06:29:20

使用pkt[0]获取第一个字节作为int。然后,可以对int对象使用逐位移位(<<>>)和逐位and(&)运算符,将其拆分为半字节:

>>> pkt = bytearray(b'EAB82348...')
>>> b = pkt[0]  # 69 == 0x45
>>> (b >> 4) & 0xf  # 0x45 -> 0x4 -> 0x4
4
>>> (b) & 0xf  # 0x45 -> 0x5
5

相关问题 更多 >