Python中如何不先转字符串直接获取二进制数字数组?
要得到int或bool类型的二进制数组,只需要在生成数组时对每个二进制位的字符串做类型转换即可,以下是具体实现:
生成int类型的二进制数组
把每个二进制位的字符转成整数0或1,修改你的代码如下:
ascii_codes = list("ABCD".encode('ascii')) int_bin_arr = list(map(lambda x: [int(bit) for bit in format(x, '08b')], ascii_codes))
执行后int_bin_arr的结构是每个ASCII码对应一个由8个整数(0/1)组成的列表,比如A对应[1,0,0,0,0,0,0,1]。
生成bool类型的二进制数组
如果需要布尔值数组,直接判断每个二进制位字符是否为'1'即可:
ascii_codes = list("ABCD".encode('ascii')) bool_bin_arr = list(map(lambda x: [bit == '1' for bit in format(x, '08b')], ascii_codes))
此时每个二进制位会变成True(对应1)或False(对应0),比如A对应[True, False, False, False, False, False, False, True]。
更高效的位运算实现(可选)
如果追求性能,也可以用位运算直接提取每个二进制位,避免字符串转换:
def get_int_bits(num): return [(num >> i) & 1 for i in reversed(range(8))] ascii_codes = list("ABCD".encode('ascii')) int_bin_arr = list(map(get_int_bits, ascii_codes))
这种方法直接通过移位和按位与操作获取每个位的整数,不需要处理字符串,效率更高。
内容的提问来源于stack exchange,提问作者SwigitySwogity
相关产品推荐
相关产品推荐

