Python:在s上发送整数值

2024-04-24 15:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用Python通过TCP套接字在服务器和客户机应用程序之间通信数据。我需要发送一个代表数据样本的4字节。初始样本是32位无符号整数。如何通过套接字发送这4个字节的原始数据?

我想发送数据:0x12345678和0xFEDCBA98 通过套接字发送的原始数据应该正好是,如果我在wireshark/tcpdump/etc上读取它,我不希望8个十六进制数中的每个值都表示为ascii字符,而是希望原始数据保持完整。

谢谢你


Tags: 数据服务器应用程序原始数据客户机字节etc符号
2条回答

用Python发送二进制数据的主要方法是使用struct模块。

例如,打包3个4字节无符号整数如下

In [3]: struct.pack("III", 3, 4, 5)
Out[3]: '\x03\x00\x00\x00\x04\x00\x00\x00\x05\x00\x00\x00'

注意,要保持结尾正确,请使用“<;”、“>;”等。

您可以使用bytes()。这就是我用来通过网络发送字符串的方法,但你也可以将其用于int。它的用法是字节([3])

编辑:字节将int(3)转换为字节。字节字符串表示为b'\x03'。所以就像你的字节字符串:0x12345678应该是b'\x12345678'

查看文档了解更多信息: https://docs.python.org/3.1/library/functions.html#bytes

相关问题 更多 >