如何将存储单独比特值的嵌套列表转换为对应字节的二进制字符串
嵌套比特列表转二进制字符串实现方法
问题场景
现有存储32个独立比特值的嵌套列表,需要转换为4个对应单字节的二进制字符串,原始数据结构:
array = [[1, 0, 0, 0, 1, 0, 1, 0], [0, 1, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 0, 0], [0, 0, 1, 1, 1, 0, 1, 1]]
预期转换结果:
array[0] == '10001010' array[1] == '01100000' array[2] == '00001000' array[3] == '00111011'
之前的实现输出会携带逗号,例如'1,0,0,0,1,0,1,0',不符合要求。
最简实现
出现带逗号的输出,本质是没有把列表里的整数比特逐个转成字符串再拼接,要么直接用了列表默认的字符串转换逻辑,要么调用join时传入的元素不是字符串类型。
直接用列表推导式+字符串拼接即可实现需求:
array = [''.join(str(bit) for bit in byte_group) for byte_group in array]
如果想要更简洁的写法,可以用map批量完成整数到字符串的转换,执行效率也更高:
array = [''.join(map(str, byte_group)) for byte_group in array]
执行上述代码后,数组内的每个子列表都会被转换为无多余符号的8位二进制字符串,完全匹配预期结果。
避坑提示:不要直接对整数子列表调用
str()做转换,该方法会保留列表的方括号、元素间的逗号分隔符,无法得到纯净的二进制串。
内容的提问来源于stack exchange,提问作者ts_abbott
相关产品推荐
相关产品推荐

