q/src/sizeof/Unsigned.go
Eduard Urbach bac5986425
All checks were successful
/ test (push) Successful in 14s
Added x86 package
2025-06-23 11:45:57 +02:00

22 lines
No EOL
394 B
Go

package sizeof
import "math"
// Unsigned tells you how many bytes are needed to encode this unsigned number.
func Unsigned[T uint | uint8 | uint16 | uint32 | uint64 | int | int8 | int16 | int32 | int64](number T) int {
x := uint64(number)
switch {
case x <= math.MaxUint8:
return 1
case x <= math.MaxUint16:
return 2
case x <= math.MaxUint32:
return 4
default:
return 8
}
}