Python实现二进制位4倍重复标量转换遇字符串拼接错误求助
二进制位重复4次的标量转换功能代码修复
问题说明
- 需求:实现标量4转换,将二进制输入的每一位重复4次(示例:输入
0101→输出0000111100001111;输入1100→输出1111111100000000) - 现有代码运行报错:
can only concatenate str (not "int") to str - 目标:修复错误,将转换结果存入数组
原代码问题分析
biner函数逻辑混乱:循环内重复生成整个密码的二进制字符串,且提前return导致列表仅存一个元素;多余的my_byte != None判断无意义(bytes元素均为整数)。skalar函数逻辑错误:试图将字符串与整数拼接,引发类型不匹配报错;且核心逻辑未实现“每一位重复4次”的需求,只是在字符串后追加整数。
修复后的完整代码
password = b'S\x92\x9b\xf2' # 将bytes转换为8位二进制字符串列表 def biner(password): binary_list = [] for byte in password: # 每个字节转为补前导零的8位二进制字符串 binary_str = f'{byte:08b}' binary_list.append(binary_str) return binary_list, len(binary_list) # 实现每一位二进制重复4次的标量转换,结果存入数组 def skalar(binary_list): scaled_results = [] for binary_str in binary_list: # 遍历每个二进制位,重复4次后拼接成新字符串 scaled_str = ''.join(bit * 4 for bit in binary_str) scaled_results.append(scaled_str) return scaled_results # 执行转换流程 binary_data, count = biner(password) scaled_array = skalar(binary_data) # 输出结果 print("原始二进制列表:", binary_data) print("标量4转换后的数组:", scaled_array)
修复说明
biner函数:正确遍历每个字节,转换为标准8位二进制字符串并存入列表,返回列表及长度。skalar函数:针对每个二进制字符串的每一位,通过bit * 4实现重复4次,再拼接成完整字符串,存入结果数组;全程操作字符串,彻底避免类型不匹配问题。
内容的提问来源于stack exchange,提问作者HelpMeInDjango
相关产品推荐
相关产品推荐

