gpt4 book ai didi

套接字的 Python 错误。 Ntohl() 函数

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:07 28 4
gpt4 key购买 nike

我在某些主机上遇到了 socket.ntohl() 函数的问题。它在所有类似的主机上都是可重复的;使用 Python 2.4.2 的 32 位机器。

>>> socket.ntohl(16777215)
-256

然而反过来似乎工作正常-

>>> socket.htonl(4294967040)
16777215

阅读 the docs , 它没有提到任何限制或警告。这是这个旧软件包的 Novell 版本中的错误吗?都是Suse 9机器:(

最佳答案

在旧的 32 位 Python 版本中,int 仅限于带符号的 32 位数字。 16777215 = 0x00FFFFFF 和 32 位 2s 补码中的 -256 是 0xFFFFFF00。

它通过将值升级为 long 在 Python 2.7 中正常工作:

>>> socket.ntohl(16777215)
4294967040L
>>> hex(4294967040)
'0xffffff00L'

编辑:

Python 2.4 是第一个统一 intlong 的版本,因此您看到的可能被认为是 2.7 已修复的错误。

看起来像这样issue修复它。

关于套接字的 Python 错误。 Ntohl() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5995971/

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