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

如何仅使用位运算将整数转换为指定长度的字节?

仅用位运算实现整数到字节的转换

给定两个参数:i(整数)、length(需要编码的字节长度),要仅通过位运算完成整数到字节的转换,以下是完善后的函数实现:

实现思路

整数转字节的核心是把整数的二进制位按8位一组拆分,每个组对应一个字节。用位运算可以直接提取每组的数值:

  • 对每个字节位置,先将整数右移对应位数,把目标字节移到最低8位
  • 再用0xFF(二进制11111111)和移位后的结果按位与,过滤掉高位,只保留当前字节的数值

完善后的代码

def int_to_bytes(i, length):
    result = bytearray()
    for n in range(length):
        # 把目标字节移到最低8位:右移n*8位,n是当前处理的字节索引(从0开始)
        shifted_num = i >> (n * 8)
        # 提取最低8位的数值,得到单个字节的取值
        byte_value = shifted_num & 0xFF
        result.append(byte_value)
    # 如果需要大端序(高字节在前),就把结果反转
    # result = result[::-1]
    return bytes(result)

补充说明

  • 上述代码默认生成小端序的字节串(低字节在前),如果需要大端序,取消注释最后一行的反转代码即可
  • 位运算细节:
    • >> 右移操作:将整数的二进制位整体右移,负数会补符号位,若处理无符号整数,结果更符合预期
    • & 0xFF:仅保留数值的最低8位,高位全部置0,刚好对应一个字节的取值范围(0-255)

内容的提问来源于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 17:10:36