Skip to content

Instantly share code, notes, and snippets.

@ecoshub
Last active December 9, 2023 18:27
Show Gist options
  • Star 17 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ecoshub/5be18dc63ac64f3792693bb94f00662f to your computer and use it in GitHub Desktop.
Save ecoshub/5be18dc63ac64f3792693bb94f00662f to your computer and use it in GitHub Desktop.
golang integer to byte array and byte array to integer function
package main
import (
"fmt"
"unsafe"
)
func main(){
// integer for convert
num := int64(1354321354812)
fmt.Println("Original number:", num)
// integer to byte array
byteArr := IntToByteArray(num)
fmt.Println("Byte Array", byteArr)
// byte array to integer again
numAgain := ByteArrayToInt(byteArr)
fmt.Println("Converted number:", numAgain)
}
func IntToByteArray(num int64) []byte {
size := int(unsafe.Sizeof(num))
arr := make([]byte, size)
for i := 0 ; i < size ; i++ {
byt := *(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&num)) + uintptr(i)))
arr[i] = byt
}
return arr
}
func ByteArrayToInt(arr []byte) int64{
val := int64(0)
size := len(arr)
for i := 0 ; i < size ; i++ {
*(*uint8)(unsafe.Pointer(uintptr(unsafe.Pointer(&val)) + uintptr(i))) = arr[i]
}
return val
}
@manosriram
Copy link

Do not use unsafe in production though.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment