mirror of
https://github.com/soypat/lneto.git
synced 2026-08-05 15:33:41 +00:00
20 lines
591 B
Go
20 lines
591 B
Go
package internal
|
|
|
|
// IntLen returns the number of bytes [strconv.AppendInt] emits for value in the
|
|
// given base, including a leading minus sign for negatives. Lets callers size a
|
|
// buffer, or test whether a value fits an existing slot, before writing a byte.
|
|
// base must be in the range 2..36, as accepted by [strconv.AppendInt].
|
|
func IntLen(value int64, base int) int {
|
|
n := 1
|
|
u := uint64(value)
|
|
if value < 0 {
|
|
n++ // Leading minus sign.
|
|
u = -u // Two's-complement magnitude; correct even for math.MinInt64.
|
|
}
|
|
for u >= uint64(base) {
|
|
u /= uint64(base)
|
|
n++
|
|
}
|
|
return n
|
|
}
|