【问题标题】:Python - 整数到字节对象的最小可能大小
【发布时间】:2022-01-23 12:23:55
【问题描述】:

我处于一种特殊情况,我想将一个整数转换为可能的最小长度的字节对象。我目前使用以下方法转换为字节:

number = 9847
bytes = number.to_bytes(4, 'little')

但是,我想将使用的字节数(4)缩小到可能的最小大小。我怎样才能做到这一点?

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    我自己想出来的!我现在使用以下函数为我转换为字节:

    import math
    
    def int_to_bytes(self, integer_in: int) -> bytes:
        """Convert an integer to bytes"""
        # Calculates the least amount of bytes the integer can be fit into
        length = math.ceil(math.log(integer_in)/math.log(256))
    
        return integer_in.to_bytes(length, 'little')
    

    这是有效的,因为对于指数 a = b^e 等价于 e = log(a)/log(b)

    在这种情况下,我们的问题是 integer_in = 256^e,我们想要求解 e。这可以通过将其改写为 e = log(integer_in)/log(256) 来解决。最后,我们使用 math.ceil() 将答案四舍五入为整数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 2012-12-29
      • 2020-09-29
      • 1970-01-01
      相关资源
      最近更新 更多