整型和字符切片转换

匿名 (未验证) 提交于 2019-12-03 00:40:02
整数转换为字节切片
思路: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() } 

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!