v/vlib/strconv/number_to_base.v

46 lines
1.1 KiB
V
Raw Normal View History

module strconv
const base_digits = '0123456789abcdefghijklmnopqrstuvwxyz'
// format_int returns the string representation of the number n in base `radix`
// for digit values > 10, this function uses the small latin leters a-z.
pub fn format_int(n i64, radix int) string {
if radix < 2 || radix > 36 {
panic('invalid radix: $radix . It should be => 2 and <= 36')
}
if n == 0 {
return '0'
}
mut n_copy := n
mut sign := ''
if n < 0 {
sign = '-'
n_copy = -n_copy
}
mut res := ''
for n_copy != 0 {
res = base_digits[n_copy % radix].str() + res
n_copy /= radix
}
return '$sign$res'
}
// format_uint returns the string representation of the number n in base `radix`
// for digit values > 10, this function uses the small latin leters a-z.
pub fn format_uint(n u64, radix int) string {
if radix < 2 || radix > 36 {
panic('invalid radix: $radix . It should be => 2 and <= 36')
}
if n == 0 {
return '0'
}
mut n_copy := n
mut res := ''
uradix := u64(radix)
for n_copy != 0 {
res = base_digits[n_copy % uradix].str() + res
n_copy /= uradix
}
return res
}