go 数字和 []byte 相互转换

package main

import (
	"bytes"
	"encoding/binary"
	"fmt"
)

func main() {

	var i1 int64 = 511 // [00000000 00000000 ... 00000001 11111111] = [0 0 0 0 0 0 1 255]

	s1 := make([]byte, 0)
	buf := bytes.NewBuffer(s1)

	// 数字转 []byte, 网络字节序为大端字节序
	binary.Write(buf, binary.BigEndian, i1)
	fmt.Println(buf.Bytes())

	// 数字转 []byte, 小端字节序
	buf.Reset()
	binary.Write(buf, binary.LittleEndian, i1)
	fmt.Println(buf.Bytes())

	// []byte 转 数字
	s2 := []byte{6: 1, 7: 255} // [0 0 0 0 0 0 1 255]
	buf = bytes.NewBuffer(s2)
	var i2 int64
	binary.Read(buf, binary.BigEndian, &i2)
	fmt.Println(i2)		// 511

	s3 := []byte{255, 1, 7:0}	// [255 1 0 0 0 0 0 0]
	buf = bytes.NewBuffer(s3)
	var i3 int64
	binary.Read(buf, binary.LittleEndian, &i3)
	fmt.Println(i3)		// 511

}
posted @ 2018-04-27 17:15  kangeloo  阅读(11002)  评论(0编辑  收藏  举报