golang小项目-文件打包

准备

  • 开发语言: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
readConfigfileName stringv caseJson , err error从接送文件中读取数据存入caseJson结构体中
stringToUint8s stringu uint8string类型转换为uint8
intToStringi ints stringint类型转换为string
memcpydst []byte, str stringstring赋值给字节数组
memcpyTimedst []byte, src [8]byte, i int8字节数组赋值给字节数组
memcpyBytedst , src []byte字节数组赋值给字节数组
timeTransfertimestr stringdatetime [8]uint8将时间字符串转换为8字节数组-用于图片时间、有效时间
copyFiledest src * os.File , offset int64将图片二进制数据复制到pkg文件中
handleCommandLiner1 , r2 string获取命令行参数
UTF8ToGBKs []byte[]byteUTF转换为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]
	} 
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值