light: implemented odr-capable trie and state structures

This commit is contained in:
zsfelfoldi
2015-11-30 13:34:19 +01:00
parent e640861704
commit ef422ee1e1
10 changed files with 1091 additions and 15 deletions

View File

@ -69,6 +69,27 @@ func compactHexDecode(str []byte) []byte {
return nibbles
}
// compactHexEncode encodes a series of nibbles into a byte array
func compactHexEncode(nibbles []byte) []byte {
nl := len(nibbles)
if nl == 0 {
return nil
}
if nibbles[nl-1] == 16 {
nl--
}
l := (nl + 1) / 2
var str = make([]byte, l)
for i, _ := range str {
b := nibbles[i*2] * 16
if nl > i*2 {
b += nibbles[i*2+1]
}
str[i] = b
}
return str
}
func decodeCompact(key []byte) []byte {
l := len(key) / 2
var res = make([]byte, l)