二进制vs文本协议

bob*_*bob 20 binary protocols

我想知道二进制和基于文本的协议之间的差异.我读到二进制协议更紧凑/更快处理.这怎么办?既然你必须发送相同数量的数据?没有?

例如,字符串"hello"在二进制格式中的大小有何不同?

Nic*_*ick 21

如果你所做的只是发送文本,那么是的,两者之间的差异不是很大.但考虑尝试传递如下内容:

  • 数字 - 你使用数字的字符串表示,还是二进制?特别是对于大数字,二进制将更紧凑.
  • 数据结构 - 如何表示文本协议中字段的开头和结尾?有时,具有固定长度字段的二进制协议更紧凑.


Max*_* E. 11

文本协议在可读性,重新实现的简易性和易于调试方面更好.二进制协议更紧凑.

但是,您可以使用像LZO或Zlib这样的库来压缩文本,这几乎和二进制一样紧凑(压缩/解压缩的性能很小.)

您可以在此处阅读有关此主题的更多信息:http:
//www.faqs.org/docs/artu/ch05s01.html

  • 您还可以压缩二进制数据.传输数字作为文本gzip比纯数字慢. (2认同)

Sys*_*min 7

如果您使用控制位/字节,则二进制协议会更好

即不是以二进制形式发送 msg:Hello,而是可以是 0x01 后跟您的消息(假设 0x01 是代表 msg 的控制字节)

因此,由于在文本协议中您发送 msg:hello\0 ...它涉及 10 个字节,而在二进制协议中它将是 0x01Hello\0 ...这涉及 7 个字节

另一个例子,假设你想发送一个数字,比如 255,在文本中它是 3 个字节,而在二进制中它是 1 个字节,即 0xFF