实现ISO Creator (主要是作为一项智力练习),我需要存储cd数据结构值。
例如,在规范https://www.cs.cmu.edu/~varun/cs315p/iso9660.pdf的第47页中,为了以ISO9660格式存储目录,我需要存储有关各种字节字段的信息。

还有其他表,例如存储字段的路径表,字段总数将以数百个为单位。
所以我可以
1-将这些存储在.cs文件中,本质上是“硬编码”
public byte length=1;
public byte ExtendedAttributeLength = 0;
//and so on2-我可以将这些常量存储在.cs文件中。
3 -I可以将这些存储在XML文件中。
我甚至可以将这些存储在数据库表中。
考虑到这些值不太可能改变,但也不是不可能,我不确定应该以哪种方式存储这些值。
谢谢
发布于 2014-08-24 08:41:40
我认为您可以将所有这些规范定义为具有显式布局的结构。通过这种方式,可以为每个字段指定偏移量:
[StructLayout(LayoutKind.Explicit, Size=16, CharSet=CharSet.Ansi)]
public struct DirectoryRecord
{
[FieldOffset(0)]
byte RecordLength;
[FieldOffset(1)]
byte ExtendedAttrRecordLength;
...
}然后,您可以将它们序列化为字节数组,并可能将它们保存为ISO图像头的一部分或它们在其中的位置。
但是,如果您查看现有的C# ISO9660实现之一(如.NET DiscUtils on CodePlex ),您将看到它们所做的事情略有不同。
对于DirectoryRecord,他们用ReadFrom和WriteTo方法定义了一个类,它负责读取输入流中的适当偏移量。这是一个选择。除此之外,它们还有其他一些组件来读取文件,并委托读取子组件(如这个组件)。
所以,你可以像他们那样做。或者,您可以像我前面提到的那样使用结构,让它们只表现为POCOs,而不是额外的读和写逻辑。你得到别的地方去做。
https://stackoverflow.com/questions/25469934
复制相似问题