试图将字节数组中的字节拆分为两个半字节
Trying to split byte in a byte array into two nibbles
我得到了一个字节数组,我正在尝试测试第一个字节的前 4 位是否等于 4。如果不等于 return 错误代码 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。
使用pkt[0]
得到第一个字节作为int 69。然后,你可以使用按位移位(<<
,>>
)和按位与(&
) 针对 int 对象的运算符,拆分成半字节:
>>> pkt = bytearray(b'EAB82348...')
>>> b = pkt[0] # 69 == 0x45
>>> (b >> 4) & 0xf # 0x45 -> 0x4 -> 0x4
4
>>> (b) & 0xf # 0x45 -> 0x5
5
我得到了一个字节数组,我正在尝试测试第一个字节的前 4 位是否等于 4。如果不等于 return 错误代码 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。
使用pkt[0]
得到第一个字节作为int 69。然后,你可以使用按位移位(<<
,>>
)和按位与(&
) 针对 int 对象的运算符,拆分成半字节:
>>> pkt = bytearray(b'EAB82348...')
>>> b = pkt[0] # 69 == 0x45
>>> (b >> 4) & 0xf # 0x45 -> 0x4 -> 0x4
4
>>> (b) & 0xf # 0x45 -> 0x5
5