Python中如何将bytes类型对象转换为二进制数?
Python bytes转32位二进制实现方法
你提供的bytes对象如下:byte_obj = b'\x45\x10\x00\x4c\xcc\xde\x40\x00\x40\x06\x6c\x80\xc0\xa8\xd9\x17\x8d\x54\xda\x28'
首先说明:32位二进制对应4字节数据,你给出的bytes总长度为20字节,可按需求截取对应4字节段转换,以下是通用实现方案:
方案1:指定段转32位二进制字符串
以转换前4字节(默认采用大端序,适配网络报文类场景)为例:
# 截取需要转换的4字节段,此处取前4字节为例 target_bytes = byte_obj[:4] # 转32位无符号整数 uint32_value = int.from_bytes(target_bytes, byteorder='big', signed=False) # 转32位二进制字符串,不足位前面补0 bin_32_str = format(uint32_value, '032b') print(bin_32_str) # 输出:01000101000100000000000001001100
方案2:全量按4字节分组转多组32位二进制
如果需要把整个20字节拆为5组32位二进制串,可按如下实现:
bin_32_groups = [] # 步长为4遍历bytes for i in range(0, len(byte_obj), 4): group_val = int.from_bytes(byte_obj[i:i+4], byteorder='big', signed=False) bin_32_groups.append(format(group_val, '032b')) # 输出所有32位二进制组 for item in bin_32_groups: print(item)
参数说明
byteorder:填big为大端序(高字节在前,适配网络报文、通用协议场景),填little为小端序(低字节在前,适配x86平台本地存储场景)signed:填True转换为有符号整数,填False转换为无符号整数,常规32位二进制转换填False即可format参数032b:指定输出为二进制格式,总长度固定32位,不足位前面补0,刚好满足32位输出要求
内容的提问来源于stack exchange,提问作者user16350182
相关产品推荐
相关产品推荐

