我正在使用 Ruby,并且正在与一个网络端点进行通信,该端点需要在发送消息本身之前格式化“标头”。
标头中的第一个字段必须是消息长度,它被定义为网络字节顺序中的 2 个二进制字节消息长度。
例如,我的消息长度是1024。如何将 1024 表示为二进制两个字节?
Ruby(以及 Perl 和 Python 等)中字节整理的标准工具是pack
and unpack
。红宝石的pack is in Array https://ruby-doc.org/core/Array.html#method-i-pack。你的长度应该是两个字节长并且按照网络字节顺序,这听起来像是一个工作n
格式说明符:
n |整数| 16 位无符号网络(大端)字节顺序
所以如果长度在length
,你会得到你的两个字节:
two_bytes = [ length ].pack('n')
如果您需要执行相反的操作,请查看String#unpack https://ruby-doc.org/core/String.html#method-i-unpack:
length = two_bytes.unpack('n').first
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)