package main // import ( // "encoding/binary" // "fmt" // "unsafe" // ) // func main() { // const x int32 = 2017403647 // const y int32 = 1010101010 // const z int32 = 2020202020 // // bytearr := valuesToByteArrayTest(x, y, z, 1) // // fmt.Println("TEST: ", bytearr) // // slice := binary.LittleEndian.Uint32(bytearr[0:4]) // // fmt.Println("SLICE:", slice) // // slice2 := binary.LittleEndian.Uint32(bytearr[4:8]) // // fmt.Println("SLICE2:", slice2) // bs := make([]byte, 4) // binary.LittleEndian.PutUint32(bs, uint32(y)) // fmt.Println(bs) // // buf := make([]byte, 4) // // arr[0] = byte(x >> 8) // // buf[0], buf[1], buf[2] = uint8(7676767>>16), uint8(id>>8), uint8(id) // bytearr := valuesToByteArray3(x, y, z, 1) // fmt.Println("TEST: ", bytearr) // slice := binary.LittleEndian.Uint32(bytearr[0:4]) // fmt.Println("SLICE:", slice) // slice2 := binary.LittleEndian.Uint32(bytearr[4:8]) // fmt.Println("SLICE2:", slice2) // } // func valuesToByteArrayOld(x int32, y int32, z int32, p int8) []byte { // arr := make([]byte, 13) // for i := 0; i < 12; i++ { // var test unsafe.Pointer // var test2 unsafe.Pointer // var test3 unsafe.Pointer // if i < 4 { // test = unsafe.Pointer(&x) // } else if i < 8 { // test2 = unsafe.Pointer(&y) // } else if i < 12 { // test3 = unsafe.Pointer(&z) // } // byt := *(*uint8)(unsafe.Pointer(uintptr(test) + uintptr(i))) // arr[i] = byt // } // arr[12] = byte(p) // return arr // } // func valuesToByteArray1(x int32, y int32, z int32, p int8) []byte { // arr := make([]byte, 13) // arr[0] = byte(x) // arr[1] = byte(x >> 8) // arr[2] = byte(x >> 16) // arr[3] = byte(x >> 24) // arr[4] = byte(y) // arr[5] = byte(y >> 8) // arr[6] = byte(y >> 16) // arr[7] = byte(y >> 24) // arr[8] = byte(z) // arr[9] = byte(z >> 8) // arr[10] = byte(z >> 16) // arr[11] = byte(z >> 24) // arr[12] = byte(p) // return arr // } // func valuesToByteArray2(x int32, y int32, z int32, p int8) []byte { // buf := make([]byte, 13) // binary.LittleEndian.PutUint32(buf[0:], uint32(x)) // binary.LittleEndian.PutUint32(buf[4:], uint32(y)) // binary.LittleEndian.PutUint32(buf[8:], uint32(z)) // buf[12] = byte(p) // return buf // } // func valuesToByteArray3(x int32, y int32, z int32, p int8) []byte { // arr := make([]byte, 13) // for i := 0; i < 12; i++ { // var test unsafe.Pointer // if i < 4 { // test = unsafe.Pointer(&x) // } else if i < 8 { // test = unsafe.Pointer(&y) // } else if i < 12 { // test = unsafe.Pointer(&z) // } // byt := *(*uint8)(unsafe.Pointer(uintptr(test) + uintptr(i))) // arr[i] = byt // } // arr[12] = byte(p) // return arr // }