【问题标题】:Extract zero-terminated strings from binary data, maybe with Ruby's string.unpack?从二进制数据中提取以零结尾的字符串,可能使用 Ruby 的 string.unpack?
【发布时间】:2012-12-28 18:40:12
【问题描述】:

我通过 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

【问题讨论】:

  • 我们需要先了解协议细节。
  • 我不知道你为什么需要它,但我当然添加了一些细节,请参阅我的更新
  • 你写过代码吗?如果是这样,请告诉我们你做了什么,这样我们就不会浪费时间重新发明你的轮子。

标签: ruby binary-data


【解决方案1】:

哦,我没能只见树木不见森林,抱歉。

您可以使用a_string.unpack("Z*")轻松提取以零结尾的字符串

【讨论】:

    猜你喜欢
    • 2011-09-09
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多