You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中不用bin(),通过位运算按字节输出数字二进制表示

解决按字节拆分展示数字二进制的问题

你的代码报错是因为bytes对象不能直接拼接单个整数,必须将整数转为bytes类型(或用bytearray更灵活)。以下是修正后的实现:

方法一:用bytearray处理字节拆分

def print_binary_by_byte(num):
    if num == 0:
        print("0: 00000000")
        return
    # 收集每个字节(低字节在前)
    byte_list = bytearray()
    n = num
    while n:
        byte_list.append(n & 0xFF)
        n >>= 8
    # 反转得到高字节在前的顺序
    byte_list.reverse()
    # 将每个字节转为8位二进制字符串,用空格分隔
    binary_parts = [f"{byte:08b}" for byte in byte_list]
    print(f"{num}: {' '.join(binary_parts)}")

# 测试示例
print_binary_by_byte(127)
print_binary_by_byte(1000)

运行结果:

127: 00000000 01111111
1000: 00000011 11101000

如果要匹配你示例里的7位二进制格式,只需把f"{byte:08b}"改成f"{byte:07b}",输出结果就会是:

127: 0000000 0111111
1000: 0000011 1110100

方法二:直接拼接bytes对象

如果坚持用bytes而不是bytearray,可以把整数放到列表中转成bytes再拼接:

def print_binary_by_byte(num):
    if num == 0:
        print("0: 00000000")
        return
    byte_data = bytes()
    n = num
    while n:
        # 将单个整数转为bytes(需包装成列表)
        byte_data = bytes([n & 0xFF]) + byte_data
        n >>= 8
    binary_parts = [f"{byte:08b}" for byte in byte_data]
    print(f"{num}: {' '.join(binary_parts)}")

两种方法都能实现按字节拆分展示二进制的需求,核心是正确处理整数到bytes的转换,避免直接拼接单个整数的错误。

内容的提问来源于stack exchange,提问作者haruhi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:25:21