您的位置:首页 > 其它

文件打包

2020-02-03 00:29 120 查看

文件打包

  • 特殊函数
  • 准备

    • 开发语言:GOLANG
    • 开发工具:LiteIDE
    • 开发环境:Windows
    • 运行环境:Linux32

    需求

    将抓拍机拍摄照片和记录信息json文件合成为一个文件:
    1.通过内置Linux系统输入命令行提取参数进行打包;
    -i 目标源文件夹 -o 打包程序文件名
    2.解析json中数据进行类型转换,重新编码;
    3.在pkg中按字节首先存放json数据,再依次存入png文件二进制数据。

    功能模块

    1.获取命令行指令;
    2.解析json中数据,存入结构体;
    3.类型和编码转换;
    4.pkg数据写入。

    流程图

    成功失败失败成功失败成功失败成功开始从指令行获取来源地址和目标文件从json中都去配置信息将json文件中数据依次存放如与C#对应的结构体中文件创建失败创建pkg文件写入pkg文件一次拷贝图片二进制数据放入pkg中创建成功结束

    数据结构

    结构体

    结构体字段 作用
    SnapFileAttrStruct 存放字节数据
    device 设备信息
    info 道路信息
    xSXX 限速模式
    record 记录信息
    imgDatetime 图片时间信息

    函数

    函数名称 函数参数 函数返回值 函数用途
    main
    readConfig fileName string v caseJson , err error 从接送文件中读取数据存入caseJson结构体中
    stringToUint8 s string u uint8 string类型转换为uint8
    intToString i int s string int类型转换为string
    memcpy dst []byte, str string string赋值给字节数组
    memcpyTime dst []byte, src [8]byte, i int 8字节数组赋值给字节数组
    memcpyByte dst , src []byte 字节数组赋值给字节数组
    timeTransfer timestr string datetime [8]uint8 将时间字符串转换为8字节数组-用于图片时间、有效时间
    copyFile dest src * os.File , offset int64 将图片二进制数据复制到pkg文件中
    handleCommandLine r1 , r2 string 获取命令行参数
    UTF8ToGBK s []byte []byte UTF转换为GBK

    特殊函数

    通过首地址指针获取结构体数据

    import (
    "unsafe"
    )
    dataBytes := (*[长度]byte)(unsafe.Pointer(&snap))

    数组越界异常处理

    func memcpyByte( dst , src []byte) {
    defer func(){
    recover()
    }()
    size := len(src)
    for i := 0 ; i < size ;i++{
    dst[i] = src[i]
    }
    }
    • 点赞
    • 收藏
    • 分享
    • 文章举报
    BRINY_CC 发布了4 篇原创文章 · 获赞 1 · 访问量 161 私信 关注
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: