我有一个Base64编码的数据包捕获二进制文件。 我想在捕获的某个位置提取子字符串。
我在Ruby中这样做:
payload_decoded = Base64.decode64(payload)
file_size = payload_decoded[114..115].unpack('S*')[0]
file_fullpath = payload_decoded[124, file_size]
p file_fullpath
这在某种程度上有效。 file_size获取一个具有我想要提取的长度的整数。然后我可以提取字节数组的正确切片。如果我只是在我的Mac终端上测试它,它会完美地显示字符串。
但是,在CentOS7中运行的应用程序本身的代码中,所有字符都以00字节为后缀显示(例如T显示为T \ x00)。我想我可以从字符串中删除它,但是想避免这种情况。处理这个问题最正确的方法是什么?
TIA
答案 0 :(得分:1)
这似乎得到了预期的结果:
file_fullpath = file_fullpath.force_encoding('UTF-16LE').encode!('UTF-8')
似乎我首先需要“说服”Ruby,该字符串是UTF-16LE,然后才转换为UTF-8。