iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang值类型转换成[]uint8类型的操作
  • 962
分享到

golang值类型转换成[]uint8类型的操作

2024-04-02 19:04:59 962人浏览 独家记忆
摘要

在Go语言中,byte其实是uint8的别名,byte 和 uint8 之间可以直接进行互转。 目前来只能将0~255范围的int转成byte。 func Int64ToByte

Go语言中,byte其实是uint8的别名,byte 和 uint8 之间可以直接进行互转。

目前来只能将0~255范围的int转成byte。


func Int64ToBytes(num int64) []uint8 {
 var buffer bytes.Buffer
 err := binary.Write(&buffer, binary.BigEndian, num)
 if err != nil {
  logs.Error("int64转[]uint8失败%v", err)
 }
 return buffer.Bytes()
}

在使用binary.Write()的时候,要注意一些问题:

Write writes the binary representation of data into w.

Data must be a fixed-size value or a slice of fixed-size // values, or a pointer to such data.

Boolean values encode as one byte: 1 for true, and 0 for false.

Bytes written to w are encoded using the specified byte order and read from successive fields of the data. When writing structs, zero values are written for fields with blank (_) field names.

我的翻译是这样的(本人英文不好,勿怪!)

Write将数据的二进制表示形式写入w。

数据必须是固定大小的值或固定大小的值的切片,或者是指向此类数据的指针

布尔值编码为一个字节:1表示true,0表示false。

写入w的字节使用指定的字节顺序进行编码,并从数据的连续字段中读取。

写入结构时,将为空白(_)字段写入零值名称。

补充:golang关于json库的一个比较容易陷入的坑 uint8[]数组的json转换问题.

类似这个CA如果实例转化成JSON.List会变成字符串.


type CA struct {
 List []uint8
}
 
func main() {
 ca := CA{[]uint8{1,2,3,4,5,6,7,8,9,0}}
 r, _ := json.Marshal(ca)
 fmt.Println(string(r)) //{"List":"AQIDBAUGBwgJAA=="}
}

而我们希望的是要一个正常的json. 只有 int8 byte uint8 这种8位的json库会给我们当成字符串处理.想要解决.如果拍脑袋就不能用这几种类型了.需要使用16 32 64位的数字才可以正常转换成json字符串.

{"List":[1,2,3,4,5,6,7,8,9,0]}

但是不用担心. Unmarshal这个 我们认为不想要的json字符串 重新到CA的其他实例 会得到想要的结果.

如果是跨语言的json通信就要小心了.

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

您可能感兴趣的文档:

--结束END--

本文标题: golang值类型转换成[]uint8类型的操作

本文链接: https://www.lsjlt.com/news/125372.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作