gpt4 book ai didi

python - int.to_bytes() 的不一致行为

转载 作者:行者123 更新时间:2023-12-04 08:30:10 26 4
gpt4 key购买 nike

当我写的时候:

expint = 34614  
expint = expint.to_bytes(2,'big')

我得到的值是 expint = b'\x876' 而不是 b'\x87\x36'(缺少 3,格式似乎有误)。然而,当我对 expint = 65418 进行同样的尝试时,我得到了正确的结果,b'\xff\x8a'。这可能是我正在使用的解释器或其他工具中的错误吗?我在 Visual Studio 2017 中使用 Python 3.7。

最佳答案

这与 int.to_bytes() 无关,与 bytes 类型本身有关。

I get a value of expint = b'\x876' instead of b'\x87\x36'

这种提示没有任何意义,因为b'\x876'b'\x87\x36' 是同一个东西 :

>>> b'\x87\x36'
b'\x876'
>>> b'\x87\x36' == b'\x876'
True

bytes 对象的表示不是只是一个十六进制转储。由于历史原因,字节串的语法允许许多其他选项(即:因为在 2.x 中我们曾经假装它们可以表示文本)。规范表示(即当您 print 一个实例时由 Python 生成的表示)仅使用 \x 样式转义作为最后的手段。

在 ASCII 中,值为 0x36 的字节映射到符号 6。 (再一次:我们曾经假装我们可以用这种方式表示文本。如果我们只需要处理英语和一小部分欧洲语言,并且可以在任何给定时间选择我们正在处理的欧洲语言,我们可以排序- 也逃脱它。)

关于python - int.to_bytes() 的不一致行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65064821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com