107 lines
2.6 KiB
Go
107 lines
2.6 KiB
Go
|
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
|
||
|
// }
|