码迷,mamicode.com
首页 > 其他好文 > 详细

整型和字符切片转换

时间:2018-07-09 19:16:15      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:自身   style   writer   写入   err   类型   int   write   顺序   

整数转换为字节切片
思路:1.开辟一个字节集缓存区
2.把整数写入到缓存区中
3.将缓存区转换为字节切片
注意: 方法binary.Write(io.Writer, ByteOrder, interface{})
1.bytes.Buffer实现了io.Writer接口。写意味着别的数据写入自身(读则意味着自身数据放入其他地方)
2.ByteOrder字节顺序
3.interface{}任何类型都实现了空接口
func IntToHex(num64 int64) []byte {
	buff := new(bytes.Buffer)

	err := binary.Write(buff, binary.BigEndian, num64)
	if err != nil {
		log.Panic(err)
	}
	return buff.Bytes()
}

字节切片转换为整型
func HexToInt(data []byte) int64 {
	//先将字节切片放在Reader中
	//buffer实现了reader,但也直接可以用reader buff := bytes.NewReader(data)
	//bytes.NewReader(data)源码返回了return &Reader{data, 0, -1}
	//而Write(data)源码使用了copy,开辟新空间
	buff := new(bytes.Buffer)
	buff.Write(data)
	var numtemp int64
	//numtemp记得要传指针
	err := binary.Read(buff, binary.BigEndian, &numtemp)

	if err != nil {
		log.Panic(err)
	}
	return  numtemp
}

 任意类型转换字节分片 (任意类型需是指明的占位大小 例如:int8 int16 float32......例如int不可以)

 

func AnyToHex(any interface{}) []byte {
	buff := new(bytes.Buffer)
	//数据写入buff
	err := binary.Write(buff, binary.BigEndian, any)
	if err != nil {
		log.Panic(err)
	}
	return buff.Bytes()
}

 

 

 

 

 

 

整型和字符切片转换

标签:自身   style   writer   写入   err   类型   int   write   顺序   

原文地址:https://www.cnblogs.com/zbhbc/p/9285025.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!