python - int.to_bytes 长度计算
问题描述
可能是一个愚蠢的问题,但我偶然发现了 int.to_bytes() 函数,如果我计算字节长度并且文档中没有提示,我无法解释为什么我必须添加“+7”。我确信我错过了一些位/字节计算魔法,但我需要社区的一些帮助。
让我感到困惑的示例:x.to_bytes((x.bit_length() + 7) // 8, byteorder='little')
来自https://docs.python.org/3/library/stdtypes.html#int.to_bytes
提前致谢
解决方案
bit_length
返回以二进制表示整数所需的位数,不包括符号和前导零。所以
x.bit_length() + 7) // 8
只会为您提供表示该整数所需的字节x
数。你也可以写类似
from math import ceil
ceil(x.bit_length / 8)
得到相同的号码。
该方法to_bytes()
需要这个字节长度作为它的第一个参数。为了说明x == 0
您可能希望将该案例包括在内:
x.to_bytes(length=(min(x.bit_length(), 1) + 7) // 8, byteorder='little')
推荐阅读
- azure - Azure 中同一子网上的两个 VM。PSRemote 可以连接到一台机器但不能连接到另一台机器吗?
- corda - 如何传入当事方列表以从 Node shell 调用流
- python - 使用整个数据集测试在欠采样数据上训练的分类器时,精度显着下降
- python - 如何添加元组并打印出来?
- snakemake - snakemake 批量创建输出
- c - 仅扫描 C 中的第一个字符
- c - GNU Lightning - Lisp 之类的“应用”功能
- python - 布尔运算符优先级
- windows - 批处理循环 - 列表中的下一项
- houghlines - HoughLinesP 未检测到简单边缘