我有一个Base64编码的数据包捕获二进制文件。 我想提取一个子串在捕获的某个位置。如何正确地将UTF-16LE字符的字节数组转换为Ruby中的utf-8字符串
我在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
通常['String#encode'](https://ruby-doc.org/core-2.4.0/String.html#method-i-encode)是一个很好的开始。 – tadman
谢谢,我确实尝试使用编码。但它之前缺少了force_encoding。让我更困惑的是,在Mac终端上,我不需要那些额外的步骤。 – user2679436