我正在开发一个带有“客户制造”数据库的项目。他开发了一个C ++ / CLI应用程序,它使用BinaryWriter.Write(String)和BinaryReader.ReadString()方法从二进制文件中存储和检索他的数据。
我不是C ++ / CLI专家,但根据我的理解,这些方法使用第一个字节的7位编码来确定字符串长度。
我需要从铁路应用程序访问他的数据,任何人都知道如何在ruby中做同样的想法?
答案 0 :(得分:2)
如果您正在处理原始二进制数据,您可能需要花一些时间熟悉pack
和unpack
方法及其各种选项。也许你所描述的是一个“Pascal字符串”,其长度是在前面编码的,或者是对它的变化。
例如:
length = data.unpack("C")[0]
string = data.unpack("Ca#{length}")[0]
双重unpack
是必需的,因为在执行第一步之前,您不知道要解压缩的字符串的长度。如果你有理由确定你没有处理UTF-8数据,你也可以使用子字符串来执行此操作,例如data[1,length]
。