当前位置: 首页 > news >正文

存贮电解液配方的二进制格式与解析它的010 Editor的模板

在将配方解析完成之后,它已经是结构化的复合数据,即有归一化的成分名称与百分含量,也有它的一些背景信息。如果我们需要将它存贮起来,有几种选择,一种是以文本形式,比如之前输出的JSON格式,YAML格式或者是CSV格式,这些格式的好处就是人容易看懂,以文本编辑器就可以查看。还有一种方式就是以特定的文件格式来存贮,这里讨论的就是这种方式,就像Word用的doc文件格式,Excel用的xls文件格式,它们不是简单的文本,好处是结构化设计,需要特定的文件解析器来打开,但不那么容易被人看懂。

为此,我设计了一个数据结构来存贮这种信息,C++中的代码如下

C++中的类设计

可以看到,这个结构中保存了配方的名称(FormuName), 别名(FormuAlias),成分个数(ItemCnt)丶配方测算的电导率和密度丶各成分的名称(cmpName)与含量(cmpWt)丶背景信息(字符数组)丶估算中缺少的一些系数信息(字符数组)。成分的个数(20个)或背景信息的项数(16项)都预留了比较大的余量。

将这些信息以字节流的形式存贮到文件后,可以得到一个二进制格式的文件。查看这个文件,可以看到有些字符串是认识的,但有些信息就不认识了。比如表示双精度的数值就无法直观的看出来。

彩色化的数据

为了方便的理解文件中各字段的意义,我借用010 Editor中的二进制模板的功能,编写了解析这种文件的模板,模板fmd.bt的内容如下:

建好的模板 截图

大体上可以看出,模板的写法与类的设计有相似之处(模板是类似C语言的语法),这里为了让结构显示更加美观,在模板中增加了一些颜色控制或注释之类的内容,很容易理解。复杂一点的是它的注释函数或读写函数。上例中演示了几个读函数,用于设置模板中数组中单个元素的value:如果第一个字节是不为空,则返回一定的结果,否则就返回空串。

将这个模板用来解析生成的fmd格式文件,就可以得到结果:

解析好的数据

010 Editor这个二进制模板的厉害之处,不仅在于可以解析文件,甚至还支持你修改文件。比如说,我可以在模板结果中修改双精度数据的数值,它可以将输入的数值将双精度数据的格式返存回文件,实现了读写双向的功能,十分方便。文本串也是如此。

当然,目前这种基本上还是数据直接存贮到文件中,未经过充分的加密,有点计算机知识的人都能逆向出来原始的数据。为了达到更好的保密效果,则可以对内容进行一定算法的加密,以保证未解密时他人无法阅读配方内容。

http://www.vanclimg.com/news/825.html

相关文章:

  • 读《大道至简——软件工程实践者的思想》有感
  • 垃圾话1
  • 春训#1题解
  • js第一天
  • java学习(大道至简读后感)
  • linux中常用的数值计算
  • 【问题】--Macbook相关问题
  • 软工作业day27
  • 2025.7.28 闲话:CF678E Another Sith Tournament 倒序状压 DP 的一点想法
  • 7.28随笔
  • 外培总结
  • CodeBuddy IDE小试-单元测试篇
  • 7.28总结
  • 枚举算法
  • Linux基本命令和Vim基本操作
  • 带外安全更新深度解析:ATL漏洞与IE防御措施
  • 更多脚本详见csdn
  • Golang基础笔记十五之sync
  • 2025总结
  • 记一个由tinyint类型引发的低级错误
  • 2025最新程序员面试题集合 包括各大厂面试规范,面试问题
  • 浅谈基环树
  • Day 28
  • 2025.7.28
  • 叔向贺贫
  • nest基础学习流程图
  • grabcad
  • 2025.7.28总结 - A
  • 亚马逊发布TEACh数据集训练家用机器人
  • 完全使用TRAE和AI 开发一款完整的应用----第一周