go-nostr/nip13/helpers.go

26 lines
472 B
Go

package nip13
const (
maxSafeAscii = 126
minSafeAscii = 35
availableSafeAscii = maxSafeAscii - minSafeAscii
)
func uintToStringCrazy(num uint64) string {
nchars := 1 + num/availableSafeAscii
chars := make([]byte, nchars)
i := 0
for {
if num < availableSafeAscii {
chars[i] = byte(num + minSafeAscii)
break
} else {
chars[i] = byte(num/availableSafeAscii + minSafeAscii)
num -= availableSafeAscii
i++
}
}
return string(chars)
}