【发布时间】:2018-06-13 10:14:07
【问题描述】:
我正在尝试在 python 3.x 中编写一个函数,该函数返回单个字节的数据以通过 TCP 连接发送。
我要发送的数据是从 0 到 100 的 unsigned integer。
我正在使用sys.getsizeof(data) 检查数据使用的字节,但我没有遇到sys.getsizeof(data) == 1 的实例。
让我们说data = 10
我尝试了几种不同的方式来存储一个字节:
1) struct.pack('>b', 10)
2) bytes(10), bytes([10])
3) 0x10
4) bytearray(10)
5) b'10'
所有这些都返回了超过两位数的字节大小。
我正在寻找一种在 python 中通过 TCP 套接字发送单个字节的方法。
【问题讨论】:
-
如果你只有一个字节,那么如果你有几十个字节的开销也没关系,因为你只支付了一次开销。您拥有数十亿字节的内存。
-
你能再解释一下吗?当然它不使用这些字节,但由于空间限制,我不想要开销。
-
现在,如果您不止一次调用此函数,那么您有 bunch 字节要存储,然后将它们 together 存储在相同的字节数组。
-
我只想返回一个字节
-
Python 对象不能那样工作。你不能只有一个字节或一个机器整数,你总是得到一个成熟的对象,随之而来的开销。也许你应该解释一下你真正想要做什么。例如,如果您需要将一个字节从 Python 传递到用 C 编写的库,那么有一种方法可以做到这一点。
标签: python python-3.x sockets tcp tcpclient