Skip to content

Instantly share code, notes, and snippets.

@ptflp
Last active May 24, 2022 15:24
Show Gist options
  • Save ptflp/aa667446da11fc1f6462560d8a92cd47 to your computer and use it in GitHub Desktop.
Save ptflp/aa667446da11fc1f6462560d8a92cd47 to your computer and use it in GitHub Desktop.
34 lines Hello, world on golang
package main
import (
"fmt"
"reflect"
"regexp"
"strconv"
"unsafe"
)
var re = regexp.MustCompile("[0-9]+")
func main() {
var part1 uint64 = 8583909746840200520
var part2 uint32 = 1684828783
sliceHeader := reflect.SliceHeader{
Data: uintptr(unsafe.Pointer(&part1)),
Cap: calcBytes(part1),
Len: calcBytes(part1),
}
bytes := *(*[]byte)(unsafe.Pointer(&sliceHeader))
sliceHeader.Data = uintptr(unsafe.Pointer(&part2))
sliceHeader.Cap = calcBytes(part2)
sliceHeader.Len = calcBytes(part2)
bytes = append(bytes, *(*[]byte)(unsafe.Pointer(&sliceHeader))...)
fmt.Println(string(bytes))
}
func calcBytes(integer interface{}) int {
n := re.FindString(fmt.Sprintf("%T", integer))
bits, _ := strconv.Atoi(n)
return bits / 8
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment