给定一个整数值,我需要一些方法来找出存储该值所需的最小字节数。该值可以是有符号或无符号的,最多 64 位。对于有符号整数,还要考虑符号位。
例如:
8 requires 1 byte at minimum
unsigned 255 requires 1 byte at minimum
signed 255 requires 2 bytes at minimum
4351 requires 2 bytes at minimum
-4294967296 requires 5 bytes at minimum
unsigned 0xFFFFFFFFFFFFFFFF requires 8 bytes at minimum
我可以想到一种快速而简单的方法来解决这个问题,使用许多 if 语句,但可能有更好的(例如更简单、更聪明、更快)的方法来做到这一点。您可以假设一个带有签名的方法int (long value, bool signed)
或两个方法int (long value)
(用于签名)和int (ulong value)
(用于未签名)。