我如何找出某个整数占用的字节数?
例如对于
- 十六进制
\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/