Go语言学习:从文件格式化读写

遇到的问题:md5哈希得到的值是16字节的值,是无法与字符编码对应的,使用ioutil.writefile写到文件里出现得到的文件是乱码的问题。
原因:ioutil.writefile默认[]byte数组是以utf-8编码的字符数组。

go语言默认utf-8编码,string类型转[]byte类型:“abc黄” →616263e9bb84(61即97,黄占三个字节)

测试:ioutil.Readfile()从文件读到[]byte里,默认是以字符串方式读取再转成[]byte数组。如文件中是abc黄,ioutil.Readfile()读取得到的byte数组是[97 98 99 233 187 132],可以使用%s格式化输出为abc黄,%x十六进制输出为616263e9bb84。

解决方法:
使用fmt.Fprintf(file,"%x",hash)以十六进制数字输出,就不会出现乱码问题。
读取时,需要同样以十六进制数格式化读取,
file := os.Open(“path”)
fmt.Fscanf(file,"%x",hash),得到的hash就是原来的[]byte类型的16位的哈希值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值