首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >你能给出一些socket.ntohl(x),..在python的套接字编程中?

你能给出一些socket.ntohl(x),..在python的套接字编程中?
EN

Stack Overflow用户
提问于 2022-03-31 16:20:43
回答 2查看 81关注 0票数 0

我从python码头学习了套接字编程,并达到了以下目的:

socket.ntohl(x)将32位正整数从网络转换为主机字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行4字节交换操作。

socket.ntohs(x)将16位正整数从网络转换为主机字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行2字节交换操作。

在版本3.10中更改:如果x不适合16位无符号整数,则引发OverflowError。

socket.htonl(x)将32位正整数从主机转换为网络字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行4字节交换操作。

socket.htons(x)将16位正整数从主机转换为网络字节顺序.在主机字节顺序与网络字节顺序相同的机器上,这是不操作的;否则,它执行2字节交换操作。

因此,对于这些函数,我所能做的就是在圆括号中放一些整数,然后得到结果:

代码语言:javascript
运行
复制
import  socket

a=socket.ntohs(32) #example number

print(a)
 

result : 8192

你能给出一些有意义的例子吗?

EN

回答 2

Stack Overflow用户

发布于 2022-03-31 16:47:23

这是一个关于哪些机器使用大端对小端点的问题。

我不是IBM大型机的用户,但似乎:他们使用的是大终端( https://www.ibm.com/docs/en/zos/2.4.0?topic=hosts-network-byte-order )。然而,IBM只使用少量的endian。

TCP/IP标准的网络字节顺序是大端的,因此它取决于应用程序代码运行的机器,以及它是小的还是大的。如果您的网络与硬件字节顺序不匹配,则需要使用您所指示的函数。

这是一个例子。

票数 0
EN

Stack Overflow用户

发布于 2022-03-31 16:55:41

Python的int与其运行的处理器具有相同的特性。

在计算机网络中,在发送和接收数据包时,采用大端排序。

因此,您必须在向网络发送数据之前以及根据python解释器正在运行的体系结构从网络接收数据之后进行转换。

请参阅https://en.wikipedia.org/wiki/Endianness

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71695996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档