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

在C#.NET中读取自定义二进制数据格式,c#,.net,binaryreader,dwg,C#,.net,Binaryreader,Dwg,我正在尝试为.NET中的AutoCAD DWG文件编写一个简单的读取器。我实际上不需要访问文件中的所有数据,因此,为整个文件格式编写读写器所涉及的复杂性不是问题 我已经设法读入了基本内容,比如版本、所有标题数据、节定位器记录,但是在读取实际的节时遇到了问题 这个问题似乎源于这样一个事实,即该格式使用了存储某些数据类型的自定义方法。我将按照这里的规格: 具体来说,依赖于单个位读入的类型是我正在努力读取的类型。问题的很大一部分似乎是C#的二进制阅读器一次只能读取整个字节,而事实上我认为我需要的是读

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

我已经设法读入了基本内容,比如版本、所有标题数据、节定位器记录,但是在读取实际的节时遇到了问题

这个问题似乎源于这样一个事实,即该格式使用了存储某些数据类型的自定义方法。我将按照这里的规格:

具体来说,依赖于单个位读入的类型是我正在努力读取的类型。问题的很大一部分似乎是C#的二进制阅读器一次只能读取整个字节,而事实上我认为我需要的是读取单个位的能力,而不是一次读取8位或字节的倍数

可能是我误解了规范以及如何解释它,但如果有人能澄清我如何从流中读取单个位,或者甚至如何读取上述规范中的一些变量类型,这些变量需要比读取完整字节更复杂的位操作,那就太好了

我确实意识到有一些商业图书馆在做这件事,但它们的价格实在太高,无法胜任手头的任务


非常感谢您的帮助。

您可以随时使用类进行位操作。所以,您可以从文件中读取字节并将其加载到位数组中,然后访问各个位。

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

对于这些库中的任何一个,您肯定无法自行开发稳定的东西。到目前为止,您花了多少时间?

以这些库的价格,您肯定无法自己开发稳定的库。到目前为止你花了多少时间?

哇,总有一天你会后悔自己这么做的。如果不是一个月后,肯定是5年后。DWG是一个bug,是一个移动目标。一点也不,我需要的规范部分都有文档记录,我以后不需要遵循规范,只读取现有文件的特定部分(它们都是R15)。问题只在于用C#来处理位级的东西。哇,总有一天你会后悔自己这么做的。如果不是一个月后,肯定是5年后。DWG是一个bug,是一个移动目标。一点也不,我需要的规范部分都有文档记录,我以后不需要遵循规范,只读取现有文件的特定部分(它们都是R15)。问题只在于如何使用C#处理位级内容。