在C#.NET中读取自定义二进制数据格式

时间:2010-08-24 12:02:55

标签: c# .net binaryreader dwg

我正在尝试用.NET编写一个简单的AutoCAD DWG文件阅读器。我实际上并不需要访问文件中的所有数据,因此编写整个文件格式的读取器/写入器所涉及的复杂性不是问题。

我已经设法阅读了基础知识,例如版本,所有标题数据,部分定位器记录,但是在阅读实际部分时遇到了问题。

问题似乎源于格式使用自定义方法存储某些数据类型的事实。我按照这里的规格进行操作:

http://www.opendesign.com/files/guestdownloads/OpenDesign_Specification_for_.dwg_files.pdf

具体来说,依赖于读入各个位的类型是我正在努力阅读的类型。问题的很大一部分似乎是C#的BinaryReader只允许你一次读取整个字节,实际上我相信我需要能够读取单个位而不是简单的8位或一次多个。

可能是因为我误解了规范以及如何解释它,但是如果有人能够澄清我如何从流中读取单个位,或者甚至如何读取某些变量类型中的

指出,上述规范需要更复杂的位操作,而不是简单地读取全部字节。

我确实知道有这样的商业图书馆,但是所有这些图书的价格都太高,无法为手头的任务辩护。

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

您始终可以使用BitArray类进行逐位操作。因此,您从文件中读取字节并将其加载到BitArray中,然后访问各个位。

答案 1 :(得分:0)

对于任何这些图书馆的价格,你绝对不能自己开发稳定的东西。到目前为止你花了多少时间?