3.4 工具设计与实现
时常需要一些小工具,来完成一些功能,故特此开发一些工具。
项目地址:https://gitee.com/irscript/ToolSet
- 详情查看代码!
国际化翻译
多语言映射编译工具
把符合定义规范的文件编译成 C语言代码和自定义二进制文件
输入命令行格式: i18n -i infile infile2 -o outfile [-c] [-t]
-i :指示后面是输入文件
-o :指示后面是输出文件
-c :指示编译格式,无 -c 时,表示编译成二进制格式,否则编译成C语言代码
-t :指示强制分配枚举值,同时生成的C语言代码中只有枚举字符串的值
-v :只是文件的版本号
输入文件格式
枚举名称,枚举值,字符串
menu_edit, 1 , "编辑"
menu_copy, 2 , "复制"
注:
#字符开始的一行会被跳过
文本编码最好为 UTF-8 编码
枚举值为0或者为空时,表示自动分配枚举值
输出文件格式
代码文件
枚举声明文件
enum{ menu_edit=1, menu_copy=2,};
静态数组文件
cstring gTslArr[]={"编辑","复制"}
kuint32 gTslEnum[]={menu_edit,menu_copy,};
二进制文件格式
-------------------------------------------------------------------
| 文件头 | 单元偏移数组 |EMS翻译单元 | EMS翻译单元 | ... |
-------------------------------------------------------------------
注:填充整数时采用字节序列为 小端 的顺序
文件头:
魔数:4 byte 为 i18n 字母的值
哈希值:4 byte crc32 文件内容的哈希值
翻译版本:4 byte 无符号,表示翻译文件版本号
EMS总数:4 byte 无符号,表示翻译单元的总数
枚举值是否连续: 4 byte 无符号,表示枚举值是否连续
翻译数据大小:4 byte 无符号,表示翻译数据的总大小
EMS翻译单元格式
枚举值:4 byte 无符号
字符串长度:2 byte 无符号,包括 null 字符
字符串数据:0xFFFF 长的字符串数据,编码和文本编码一致(建议文本采用UTF-8编码),两字节对齐
自解压
window平台下的自解压原理案例,可用于实现自定义安装包。
文件转2进制
将文件转成C语言代码。