我们在 Turbo Pascal 中有一个旧应用程序,它可以将其内部状态保存到一个文件中,我们需要能够在 C# 应用程序中读取/写入这个文件。
旧应用程序通过转储各种内存数据结构来生成文件。在一个地方,应用程序只是转储了一个内存范围,这个内存范围包含一些数组。我试图找出实际数组元素之前的字节的用途。特别是,块中的前两项可以表示为:
type
string2 = string[2];
stringarr2 = array[0..64] of string2;
string4 = string[4];
stringarr4 = array[0..64] of string4;
在数据文件中,我看到以下字节序列:
25 00 02 02 41 42 02 43 44 ...
25
是数组中元素的数量。是第02 41 42
一个字符串元素,“AB”;这02 43 44
是第二个字符串元素,“CD”,依此类推。我不知道00 02
数组元素计数和第一个数组元素之间的含义。数组元素计数可能是25 00
元素大小是02
,但每个数组元素的大小实际上是 3 个字节。
在文件中 4 字符字符串数组开始的位置,我看到以下内容:
25 00 04 00 00 04 41 42 43 44 04 45 46 47 48
同样,25
这是数组中元素的数量;04 41 42 43 44
是数组中的第一个元素,“ABCD”,依此类推。中间有字节00 04 00 00
。也许他们是旗帜。也许它们是数组形状的某种指示(但我看不出它们是如何指示02
一04
维数组的)。
我无权使用 Turbo Pascal 来尝试将不同类型的数组写入文件,也无权安装 Free Pascal 之类的东西,因此我在这些方面进行实验的机会非常有限。
这些数组不是动态的,因为 Turbo Pascal 没有它们。
提前感谢任何尘土飞扬的回忆。