• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    golang值类型转换成[]uint8类型的操作

    在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通信就要小心了.

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

    您可能感兴趣的文章:
    • 手把手教你导入Go语言第三方库
    • golang gopm get -g -v 无法获取第三方库的解决方案
    • golang 输出重定向:fmt Log,子进程Log,第三方库logrus的详解
    • go 类型转换方式(interface 类型的转换)
    • Mongodb 利用mongoshell进行数据类型转换的实现方法
    • Go语言string,int,int64 ,float之间类型转换方法
    • GO语言类型转换和类型断言实例分析
    • Go 第三方库之类型转换问题
    上一篇:golang 监听服务的信号,实现平滑启动,linux信号说明详解
    下一篇:go mod 使用旧版本 版本号指定方式
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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