Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我正在开发一个带有“客户制造”数据库的项目。他开发了一个 C++/CLI 应用程序,该应用程序使用 BinaryWriter.Write(String) 和 BinaryReader.ReadString() 方法从二进制文件中存储和检索他的数据。
我不是 C++/CLI 专家,但据我了解,这些方法使用第一个字节的 7 位编码来确定字符串长度。
我需要从铁路应用程序访问他的数据,有人知道如何在 ruby 中做同样的想法吗?
如果您正在处理原始二进制数据,您可能需要花一些时间熟悉pack和unpack方法及其各种选项。也许您所描述的是一个“帕斯卡字符串”,其中长度是预先编码的,或者是它的变体。
pack
unpack
例如:
length = data.unpack("C")[0] string = data.unpack("Ca#{length}")[0]
double-unpack是必需的,因为在执行第一步之前您不知道要解压的字符串的长度。您也可以使用子字符串来执行此操作,例如,data[1,length]如果您有理由确定您没有处理 UTF-8 数据。
data[1,length]