我正在尝试为 .NET 中的 AutoCAD 的 DWG 文件编写一个简单的阅读器。我实际上不需要访问文件中的所有数据,因此为整个文件格式编写读取器/写入器所涉及的复杂性不是问题。
我已经设法阅读了基础知识,例如版本、所有标题数据、部分定位器记录,但是在阅读实际部分时遇到了问题。
问题似乎源于格式使用存储某些数据类型的自定义方法这一事实。我将按照这里的规格进行:
http://www.opendesign.com/files/guestdownloads/OpenDesign_Specification_for_.dwg_files.pdf
具体来说,依赖于读取单个位的类型是我正在努力阅读的类型。问题的很大一部分似乎是 C# 的 BinaryReader 只允许您一次读取整个字节,而事实上我相信我需要能够读取单个位而不是一次读取 8 位或多个位。
可能是我误解了规范以及如何解释它,但如果有人能澄清我如何从流中读取单个位,甚至如何读取上述规范中的某些变量类型需要比简单地读取完整字节更复杂的位操作,那就太好了。
我确实意识到有一些商业图书馆可以做到这一点,但是所有这些图书馆的价格都太高了,以至于无法满足手头的任务。
非常感谢任何帮助。