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

自定义数字转二进制函数返回7位而非8位,不使用bin()如何实现?

问题根因
  • 逻辑顺序错误:原代码先执行number = number // 2再取余存储,丢失了当前数的最低位计算结果,是输出少了最后一位1的直接原因
  • 适配缺陷:没有补前导0凑齐8位长度;原范围判断range(0,255)不包含255,不符合0-255的输入要求;0值返回也未适配8位规则
修改后代码(固定循环8次,逻辑更简洁)
def number_to_byte(number):
    if not isinstance(number, int):
        raise TypeError
    if not 0 <= number <= 255:
        raise ValueError
    new_bin = []
    temp = number
    # 固定计算8位,避免长度不足问题
    for _ in range(8):
        new_bin.append(temp % 2)
        temp = temp // 2
    # 存储顺序是低位到高位,反转后得到高位在前的8位结果
    new_bin.reverse()
    return new_bin
可选修改方案(保留原有while循环逻辑)
def number_to_byte(number):
    if type(number) != int:
        raise TypeError
    # 范围调整为包含255
    if number not in range(0, 256):
        raise ValueError
    new_bin = []
    temp = number
    while temp:
        # 调整顺序:先取余再整除,避免丢失位
        new_bin.append(temp % 2)
        temp = temp // 2
    new_bin.reverse()
    # 补前导0凑足8位
    return [0] * (8 - len(new_bin)) + new_bin
效果验证

输入对应数值后,两个版本的代码都会返回你预期的8位结果[0, 1, 1, 1, 1, 0, 1, 1],全程未调用bin()函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 13:42:04