Search code examples
pythonintegernumbersbytesize

Get size in Bytes needed for an integer in Python


How can I find out the number of Bytes a certain integer number takes up to store?

E.g. for

  • hexadecimal \x00 - \xff (or decimal 0 - 255 = binary 0000 0000 - 1111 1111) I'm looking to get 1 (Byte),
  • hexadecimal \x100 - \xffff (or decimal 256 - 65535 = binary 0000 0001 0000 0000 - 1111 1111 1111 1111) would give me 2 (Bytes)

and so on.

Any clue for hexadecimal or decimal format as the input?


Solution

  • You can use simple math:

    >>> from math import log
    >>> def bytes_needed(n):
    ...     if n == 0:
    ...         return 1
    ...     return int(log(n, 256)) + 1
    ...
    >>> bytes_needed(0x01)
    1
    >>> bytes_needed(0x100)
    2
    >>> bytes_needed(0x10000)
    3