我需要使用尽可能少的内存,因为我必须每秒多次通过互联网发送长数组的字符。在学习zlib时,我想到了一个问题。 我的字符只能是1或0.它们可以用一个比特来表示。发送整个字节是不是没有意义?只需每个值发送一个比特,我就可以得到8倍的压缩。我可以发送单个位而不是字节吗?
答案 0 :(得分:2)
您无法发送单个位,因为在基础级别IP protocol sends size of packet in bytes。
但是,您可以手动打包单个字节并发送它。这样会更有效率。
答案 1 :(得分:1)
对于套接字编程上下文而言,就C / C ++而言,你是不可能的。数据类型不可能小于一个字节。
答案 2 :(得分:-2)
你的问题只表明你不明白比特和字节是什么。字节是一组8位,仅此而已,仅此而已。您可以将其解释为无符号数字0-255,或带符号数字-128 - +127,ASCII字母或 8个单独位。套接字发送字节,所以如果你想发送比特,你必须将它们分成8个边界,这就是它。如何打包这些数据完全取决于您,网络和套接字库并不关心。