Python如何将编码载荷转为字节列表?传感器解码入门求助
传感器数据编码载荷转字节切片解决办法
你手里的编码载荷0xB84426C3032E28C30328C20228C20226C40326C30226C40326C303转字节切片的问题,之前的代码无效是两个原因:
bytearray.fromhex()不能识别0x前缀,这个方法只接受纯十六进制字符组成的字符串- 用整数调用
to_bytes(2, 'big')时,指定的2字节长度太小,这个整数对应的字节数远超过2,会直接报错
给你两个可行的解决方法:
方法一:去掉前缀后用fromhex转换
直接把0x去掉,用纯十六进制字符串转字节数组:
# 去掉0x前缀的十六进制字符串 payload_hex = "B84426C3032E28C30328C20228C20226C40326C30226C40326C303" # 转换为字节切片 byte_slice = bytearray.fromhex(payload_hex) print(byte_slice)
方法二:基于整数自动计算字节数转换
如果载荷已经是Python中的整数类型,自动计算它需要的字节数再转换:
# 载荷对应的整数 payload_int = 0xB84426C3032E28C30328C20228C20226C40326C30226C40326C303 # 计算所需字节数:bit_length获取二进制位数,加7后整除8得到字节数 byte_count = (payload_int.bit_length() + 7) // 8 # 转换为字节切片(big表示大端字节序,可根据文档要求调整为little) byte_slice = payload_int.to_bytes(byte_count, 'big') print(byte_slice)
两种方法都能得到符合要求的字节切片,你可以根据手里的载荷类型(字符串/整数)选择对应的方式。
内容的提问来源于stack exchange,提问作者Chau Loi
相关产品推荐
相关产品推荐

