python - 获取 Python 中整数所需的字节大小

标签 python integer numbers byte size

我如何找出某个整数占用的字节数?

例如对于

  • 十六进制 \x00 - \xff(或十进制 0 - 255 = 二进制 0000 0000 - 1111 1111) 我正在寻找 1(字节),
  • 十六进制 \x100 - \xffff(或十进制 256 - 65535 = 二进制 0000 0001 0000 0000 - 1111 1111 1111 1111) 会给我 2(字节)

等等。

输入十六进制或十进制格式有什么线索吗?

最佳答案

def byte_length(i):
    return (i.bit_length() + 7) // 8

当然,正如 Jon Clements 指出的那样,这不是实际 PyIntObject 的大小,它有一个 PyObject header ,并以最容易处理的任何方式将值存储为 bignum with 而不是最紧凑的,并且您必须至少有一个指向实际对象顶部的指针(4 或 8 个字节),依此类推。

但这是数字本身的字节长度。这几乎可以肯定是最有效的答案,也可能是最容易阅读的。

还是 ceil(i.bit_length()/8.0) 更具可读性?

关于python - 获取 Python 中整数所需的字节大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329794/

相关文章:

Java最左二分查找

java - arraylist 整数中出现意外结果 - pde

c# - C#中段落编号的正则表达式

python - TCP Receive in Python,读取数据

python - 如何在 Django 模板中的 {% %} 之间使用变量

python - Django 查菲尔德正则表达式

c++ - 将整数输入数组的方法比 scanf() 或 cin 更快?

swift - X、Y 坐标的随机数生成器

SQL Server : generate possible combinations of numbers

python - 调试 Apache/Django/WSGI 错误请求 (400) 错误