2

我正在开发一个带有“客户制造”数据库的项目。他开发了一个 C++/CLI 应用程序,该应用程序使用 BinaryWriter.Write(String) 和 BinaryReader.ReadString() 方法从二进制文件中存储和检索他的数据。

我不是 C++/CLI 专家,但据我了解,这些方法使用第一个字节的 7 位编码来确定字符串长度。

我需要从铁路应用程序访问他的数据,有人知道如何在 ruby​​ 中做同样的想法吗?

4

1 回答 1

2

如果您正在处理原始二进制数据,您可能需要花一些时间熟悉packunpack方法及其各种选项。也许您所描述的是一个“帕斯卡字符串”,其中长度是预先编码的,或者是它的变体。

例如:

length = data.unpack("C")[0]
string = data.unpack("Ca#{length}")[0]

double-unpack是必需的,因为在执行第一步之前您不知道要解压的字符串的长度。您也可以使用子字符串来执行此操作,例如,data[1,length]如果您有理由确定您没有处理 UTF-8 数据。

于 2013-02-13T04:56:01.153 回答