从二进制数据中提取零终止字符串,也许使用Ruby的string.unpack?

时间:2012-12-28 18:40:12

标签: ruby binary-data

我通过Ruby对服务器执行UDP请求。服务器的响应是混合内容,这意味着我得到字符串,数字等。我知道如何解释响应,但我遇到字符串问题,因为它们的长度可能会有所不同。所有字符串都是零终止的。

字符串可以如下所示:

[84, 104, 101, 32, 83, 116, 114, 101, 97, 109, 33, 32, 50, 52, 47, 55,
32, 66, 97, 100, 119, 97, 116, 101, 114, 32, 91, 65, 108, 108, 116,
97, 108, 107, 93, 0]

它以UTF8编码,代表The Stream! 24/7 Badwater [Alltalk]

如前所述,响应中有更多字节,而不仅仅是上面的单个字符串。可以使用string.unpack轻松获取所有固定长度的内容,但我不知道如何提取字符串。我是否必须手动解析字节流,还是可以继续使用string.unpack

编辑:

整个回复如下:http://paste.org/59395

协议详情:http://tinyurl.com/bvyepsl

1 个答案:

答案 0 :(得分:2)

哦,我无法看到树木,对不起。

您可以使用a_string.unpack("Z*")

轻松提取以零结尾的字符串