def bitsarr_to_bytearr(bitsarr): bytes_list = [sum([list(byte)[::-1][b] << b for b in range(0,8)]) for byte in zip(*(iter(bitsarr),) * 8)] return bytearray(bytes_list) 是什么意思
时间: 2024-03-31 13:34:24 浏览: 56
ha.rar_C++ 字节 位
这段代码的作用是将一个由0和1组成的二进制位数组转换为字节数组(bytearray),具体的实现步骤如下:
1. 首先通过`zip(*(iter(bitsarr),) * 8)`,将bitsarr按照8个一组进行分组,每组8个二进制位,即一个字节的大小,得到一个元组列表。
2. 对于每个字节,利用列表推导式和sum函数,将其按照高低位交换的方式转换为十进制数。具体实现是,对于每个二进制位(从低位到高位),将其左移位数(0~7)个位置,然后相加得到该字节对应的十进制数。
3. 将每个字节对应的十进制数组成的列表转换为字节数组,即bytearray类型,并返回结果。
总之,这段代码的作用是将位数组转换为字节数组的通用实现方式,可以在网络传输、文件存储等场景中使用。
阅读全文