处理文件中的数据引用/指针
Handling data references/pointers in a file?
我正在使用二进制文件格式。我会尽量让它变得简单,因为它很难解释。
写入文件的数据结构可能包含"指针"(即指向文件中其他位置的字符串的指针,或指向文件中另一个结构的指针)。"指针"的更好词是"偏移",即。结构包含文件中字符串的偏移量)。
举个简单的例子:
struct ExampleStruct {
public string Text;
public int Number;
};
"Text"字符串成员将写入文件的开头,并且不包含在序列化结构中。
因此,从本质上讲,结构在文件中将如下所示:
struct ExampleStruct {
public uint TextLocationOffset;
public int Number;
};
...'TextLocationOffset' 是字符串 'Text' 在文件中的位置的偏移量。
因此,在我有了它之后,我需要一个"重定位表" - 本质上是一个指向文件中数据指针的双指针列表。(这有意义吗?
因此,由于我将 ExampleStruct 写入我的文件,并且它包含一个"指针"(TextLocationOffset),因此我的"重定位表"将包含:
public uint TextLocationOffset_LocationOffset;
...'TextLocationOffset_LocationOffset' 包含文件中 'TextLocationOffset' 的 OFFSET 。
这一切都有意义吗?我试图尽可能地简化它。
我的问题是,我将如何跟踪 C# 中的所有指针/双指针/重定位?数据不断被添加到我拥有的 byte[] 数组中,因此偏移量将不断变化。
这在C++中很容易,因为我可以获得正在"重新定位"的任何内容的双指针,然后我可以将原始"指针"(在我的示例中为"文本位置偏移")更改为正确的偏移量,然后我可以找到"文本位置偏移"值的位置并将其添加到我的重新定位表中。
对不起,如果这没有意义。几周前我尝试问这个问题,但没有得到答复,我可能会让它听起来令人困惑。
我只需要一种方法来跟踪我的代码中的所有这些......有什么提示吗?
附言如果您需要更详尽的示例,我很乐意提供。:)
使用数据库表 - 所有这些工作都已完成。
您可能需要查看序列化和反序列化数据的其他方法。跟踪托管应用程序中的重新定位和偏移是不必要的,除非您有极其特殊的方案。如果您让我们更多地了解您在功能方面要实现的目标,因此用户可以更好地指导您。
- C++取消引用指针.为什么会发生变化
- 深层复制具有自引用指针的类
- Visual c ++,使用字符串引用/指针调用 dll 函数
- std::unordered_map::提取引用/指针失效
- 为什么在引用指针时将 const 放在 & 符号的左侧有效,而在右侧则无效?
- 区分接受常量参数的函数引用/指针和与函数参数同名的非常量参数
- 如何在 c++ 中使用带有数学运算的引用/指针?
- 了解通过引用传递取消引用指针时C++堆/堆栈分配
- 取消引用指针并立即为其分配变量,导致分段错误
- 如何获取指向类(而不是对象)的引用/指针
- 将类型参数传递给自引用指针
- 我应该如何定义返回指针的函数?(引用指针与指针指针)
- 在析构函数内取消引用指针时出现分段错误
- 来自引用指针的内存泄漏
- 引用指针后面的值
- 无法取消引用指针
- 引用指针调用成员函数
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- 取消引用指针以创建数组的副本
- 有关启动引用指针的引用的问题