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语言代码。