Ruby相当于ReadString?

时间:2013-02-13 04:41:57

标签: ruby c++-cli

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

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

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

1 个答案:

答案 0 :(得分:2)

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

例如:

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

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