预先定义的Go
int类型大小是特定于实现的,是32位还是64位(数字类型)。
这是将big-endian
ints 转换为
bytes(
uint8s)的示例。
package mainimport ( "encoding/binary" "fmt" "reflect")func IntsToBytesBE(i []int) []byte { intSize := int(reflect.TypeOf(i).Elem().Size()) b := make([]byte, intSize*len(i)) for n, s := range i { switch intSize { case 64 / 8: binary.BigEndian.PutUint64(b[intSize*n:], uint64(s)) case 32 / 8: binary.BigEndian.PutUint32(b[intSize*n:], uint32(s)) default: panic("unreachable") } } return b}func main() { i := []int{0, 1, 2, 3} fmt.Println("int size:", int(reflect.TypeOf(i[0]).Size()), "bytes") fmt.Println("ints:", i) fmt.Println("bytes:", IntsToBytesBE(i))}输出:
int size: 4 bytesints: [0 1 2 3]bytes: [0 0 0 0 0 0 0 1 0 0 0 2 0 0 0 3]
要么
int size: 8 bytesints: [0 1 2 3]bytes: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 3]


![如何将int []转换为uint8 [] 如何将int []转换为uint8 []](http://www.mshxw.com/aiimages/31/371460.png)
