首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何存储协议/规范结构

如何存储协议/规范结构
EN

Stack Overflow用户
提问于 2014-08-24 08:33:54
回答 1查看 64关注 0票数 2

实现ISO Creator (主要是作为一项智力练习),我需要存储cd数据结构值。

例如,在规范https://www.cs.cmu.edu/~varun/cs315p/iso9660.pdf的第47页中,为了以ISO9660格式存储目录,我需要存储有关各种字节字段的信息。

还有其他表,例如存储字段的路径表,字段总数将以数百个为单位。

所以我可以

1-将这些存储在.cs文件中,本质上是“硬编码”

代码语言:javascript
复制
public byte length=1;
public byte ExtendedAttributeLength = 0;
//and so on

2-我可以将这些常量存储在.cs文件中。

3 -I可以将这些存储在XML文件中。

我甚至可以将这些存储在数据库表中。

考虑到这些值不太可能改变,但也不是不可能,我不确定应该以哪种方式存储这些值。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-24 08:41:40

我认为您可以将所有这些规范定义为具有显式布局的结构。通过这种方式,可以为每个字段指定偏移量:

代码语言:javascript
复制
[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,他们用ReadFromWriteTo方法定义了一个类,它负责读取输入流中的适当偏移量。这是一个选择。除此之外,它们还有其他一些组件来读取文件,并委托读取子组件(如这个组件)。

所以,你可以像他们那样做。或者,您可以像我前面提到的那样使用结构,让它们只表现为POCOs,而不是额外的读和写逻辑。你得到别的地方去做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25469934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档