golang网络字节与基本类型转换

本文介绍了在Go语言中如何进行网络通信时的基本数据类型与字节之间的转换,包括有符号和无符号类型转换,以及使用Write/Read方法和binary.BigEndian方法的详细操作。内容涵盖int8、uint8到byte的转换,以及各种整型和浮点型数据的字节序列化和反序列化。
摘要由CSDN通过智能技术生成

说明

网络通信需要将go基本数据类型转为字节. go如何做?

基本类型

c类型 go类型 字节长度
signed char int8 1
unsigned char uint8 1
_Bool bool 1
short int16 2
unsigned short uint16 2
int int32 4
unsigned int uint32 4
float float32 4
long long int64 8
unsigned l long uint64 8
double float64 8
char[] uint8 1

有符号与无符号转换

  • int8/uint->byte或 byte->int8/uint8

1个字节强制类型转换会超范围

// int8 ->byte
var a int8 = -1
byte(a)          // 正常 255

//byte->int8
int8(byte(255))  //异常 constant 255 overflows int8

// byte->int8
var a byte = 255
int8(a)         //正常 -1

通用方法 Write/Read

  • /int8/uint8/int16/uint16/int32/uint32/int64/uint64/float32/float64->[]byte
var a int16 =1
buf := new(bytes.Buffer)
binary.Write(buf, binary.BigEndian, &a)
fmt.Println(buf.Bytes())
  • []byte ->int8/uint8/int16/uint16/int32/uint32/int64/uint64/float32/float64
b :=[]byte{
   64, 9, 30, 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值