当我处理文本数据时,我使用了出色的 FileHelpers 库。它允许我非常轻松地将文本字段从文件或内存中的字符串转储到代表数据的类中。
在使用基于大端微控制器的系统时,我需要读取串行数据流。为了在非常有限的微控制器平台上节省空间,我需要编写原始二进制数据,其中包含各种多字节类型的字段(本质上只是将结构变量转储出串行端口)。
我喜欢 FileHelpers 的架构。我创建了一个代表数据的类,并用属性标记它,告诉引擎如何将数据放入类中。我可以为引擎提供一个表示单个记录的字符串,并获得数据的反序列化表示。但是,这与对象序列化的不同之处在于原始数据没有以任何方式分隔,它是一种简单的二进制固定记录格式。
FileHelpers 可能不适合读取此类二进制数据,因为它无法处理出现的空值并且* 我怀疑可能存在 unicode 问题(引擎将输入作为字符串,所以我必须从串行端口读取字节并翻译在它们进入我的数据转换器类之前将它们转换为 unicode 字符串)。作为一个实验,我已经将它设置为读取二进制流,只要我小心不发送空值,到目前为止它工作得很好。很容易设置新的转换器来读取原始数据并解决字节序格式化问题等。它目前在 null 上失败并且无法处理多个记录(它期望记录之间有 CRLF)。
我想知道的是,是否有人知道与 FileHelpers 类似但旨在处理二进制数据的开源库。
我正在考虑从 FileHelpers 派生一些东西来处理这个任务,但似乎应该已经有一些东西可以做到这一点。
*事实证明,它不会抱怨输入流中的空值。我的测试程序中有一个不相关的错误,我预计空值会出现问题。应该先深入调查一下!