gpt4 book ai didi

用于套接字聊天的python最小数据类型

转载 作者:行者123 更新时间:2023-11-28 16:47:30 25 4
gpt4 key购买 nike

可以通过套接字模块发送的最小“数据包”是多少?我只需要发送 16 位数据,2 个字节,这是我必须快速发送的东西,所以我希望它尽可能小。我做了一些“实验”来找到最小的大小,但我得到的都没有小于 28 字节。

测试结果:

sys.getsizeof(2) = 28

sys.getsizeof(0b0001) = 28

sys.getsizeof(bytes(0b0001)) = 34

sys.getsizeof('0001') = 66

sys.getsizeof('a') = 60

sys.getsizeof(0b0001000100010001000100010001) = 28

sys.getsizeof(0b000100010001000100010001000100010001) = 32

我只是想知道这是否确实是我可以发送的最小值。


我还想补充一点,python 很难与二进制一起工作。我知道它不像以前那样重要,但对于某些事情来说它很方便。我这样说有两个原因:

1) 我似乎无法保留二进制变量,它总是恢复为整数或其他类型。

2) 经过测试,我进行了二进制到字节的转换,并将其作为大小:

sys.getsizeof(bytes(0b0001001001001001001001001)) = 2396778

最佳答案

sys.getsizeof 返回 Python int 的内部大小,而不是 C int。您可以使用 struct.pack 获取 C 字节:

>>> import struct
>>> struct.pack('H',32768) # default endian-ness
'\x00\x80'
>>> struct.pack('>H',32768) # force big-endian
'\x80\x00'

发送两个显式字节:

>>> struct.pack('BB',100,200)
'd\xc8'

请注意,字节以字符串表示。 'd' 是 100 的 ASCII 字符,\xc8 是 200 的十六进制表示法:

>>> ord('d')
100
>>> 0xc8
200

您可以获得使用 .pack 创建的数据包的结果大小。比如两短一长的尺寸:

>>> struct.calcsize('>HHL')
8

参见 struct module documentation .

关于用于套接字聊天的python最小数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12310042/

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