1
0
mirror of https://github.com/fumiama/go-base16384.git synced 2026-06-05 00:32:52 +08:00
Files
go-base16384/base14_arm64.go
2022-12-13 17:08:02 +08:00

46 lines
887 B
Go

//go:build arm64
// +build arm64
package base14
import (
"encoding/binary"
"unsafe"
)
//go:noescape
//go:nosplit
func _encode(offset, outlen int, b, encd []byte) (sum uint64, valn uintptr)
//go:noescape
//go:nosplit
func _decode(offset, outlen int, b, decd []byte)
func encode(offset, outlen int, b, encd []byte) {
if len(b) == 7 {
b = append(b, 0)
}
sum, valn := _encode(offset, outlen, b, encd)
if offset == 0 {
return
}
n := valn - (uintptr)(*(*unsafe.Pointer)(unsafe.Pointer(&encd)))
println(sum, n)
var tmp [4]byte
binary.LittleEndian.PutUint32(tmp[:], uint32(sum))
copy(encd[n:], tmp[:])
encd[outlen-2] = '='
encd[outlen-1] = byte(offset)
}
func decode(offset, outlen int, b, decd []byte) {
/*
if offset != 0 && cap(b) == len(b) {
b = append(b, make([]byte, 8)...)
}
_decode(offset, outlen, b, decd)
*/
decodeGeneric(offset, outlen, b, decd)
}