【发布时间】:2017-08-09 22:02:17
【问题描述】:
在 010 Editor 模板(类似 C/C++ 的语法)中,我想解析一个用 Microsoft .Net 的 BinaryWriter 类编写的字符串,如下所示:
myBinaryWriter.Write("hello");
这会写出一个以长度为前缀的字符串,其中长度用Write7BitEncodedInt 编码。这里是写长度的.Net源码,供参考:
// Write out an int 7 bits at a time. The high bit of the byte,
// when on, tells reader to continue reading more bytes.
uint v = (uint) value; // support negative numbers
while (v >= 0x80) {
Write((byte) (v | 0x80));
v >>= 7;
}
Write((byte)v);
010 编辑器模板语法中的结构定义如何解析这样编码的字符串?
【问题讨论】:
-
您的问题是否在于理解特定脚本语言的编码或制定解码器?在 C 语言中,你会按照
unsigned c, v = 0, b = 0; do v |= (c = Read()) & 0x7F) << b; while(b += 7, c & 0x80);的方式做一些事情。我不知道它是否或如何为您的 HEX 编辑器转换为解析器脚本,但鉴于 C 标记,我想这可能是一个起点。 -
你有什么问题?
-
我想我了解编码,但我既不熟悉 C 也不熟悉位操作和指针操作。如果它不使用太多不受支持的功能,我认为我可以将纯 C 解决方案转换为编辑器的脚本语言。例如,不支持指针,但存在以 null 结尾的“字符串”类型...
标签: c string data-structures