当前位置: 首页 > 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.sczhlp.com/news/687.html

相关文章:

  • 读《大道至简——软件工程实践者的思想》有感
  • 动态规划
  • Wireshark入门指南:网络流量分析利器
  • 量子计算先驱David Schuster的二十年探索之路
  • SpringBoot中使用TOTP实现MFA(多因素认证) - Tom
  • 上拉电阻和下拉电阻
  • 蓝桥杯2024省赛A组题解
  • 春训#2题解
  • 国内AI编码工具哪家强CodeBuddy+通义灵码+Trae
  • js基础第二天
  • [PaperReading] Stable Video Diffusion: Scaling Latent Video Diffusion Models to Large Datasets
  • 蓝桥杯2025省赛A组游记题解
  • 7.28 闲话
  • FM2023利兹联崛起之路#1
  • 暑训#1补题
  • 07.08 论文精读 人像线稿生成模型
  • 7/28
  • 【LeetCode 141】算法:环形链表
  • 暑训#3补题
  • 关于跨域的一点新理解
  • js基础第三天
  • 龙哥量化:股票期货- 精华资料目录
  • 2025省选组合数学笔记
  • 字符串
  • js基础第四天
  • 同时点亮LED、数码管以及点阵
  • 今日总结
  • docker安装
  • 二进制简史:从理论到芯片
  • Qcom dcvs_epss.c 驱动解析.