python - 尝试将字节数组中的字节拆分为两个半字节

标签 python arrays byte nibble

给定一个字节数组,我试图测试第一个字节的前 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。

最佳答案

使用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

关于python - 尝试将字节数组中的字节拆分为两个半字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282080/

相关文章:

C++多类型数组

c++ - 文字的字节大小

python - 如何使用python将完整的文件夹上传到Dropbox

jquery - 使用 Tornado 回复 Ajax 请求

python - Argparse 中的异常

javascript - 如何在 JavaScript 中过滤和映射数组

javascript - 从 json 文件中提取包含数组中值的项目

python - lambda 作为 jinja2 过滤器的参数?

c# - 如何以最有效的方式将图像转换为字符串?

binary - 1 KB (KiloByte) 真的等于 1024 字节吗?