Binary Unit Conversion
The 'binary' library (ofek/binary) provides a straightforward and reliable way to convert between binary (IEC) and decimal (SI) units. It is currently at version 1.0.2, with releases driven by bug fixes and new features, maintaining an active development status.
Warnings
- breaking Version 1.0.2 introduced a change where explicit conversion to bytes now performs floor division. This might alter results for some calculations compared to prior versions.
- gotcha The library differentiates between binary (IEC, e.g., KiB, MiB) and decimal (SI, e.g., KB, MB) units. Misunderstanding these standards can lead to incorrect calculations, especially when comparing advertised storage (SI) with actual usable space (IEC).
- gotcha When `convert_units` is called without specifying a `unit` or `to` parameter, it defaults to assuming `n` is in bytes and converts to the highest possible binary unit. If `si=True` is passed, it converts to the highest SI unit. Ensure these defaults align with your intended conversion.
Install
-
pip install binary
Imports
- BinaryUnits
from binary import BinaryUnits
- DecimalUnits
from binary import DecimalUnits
- convert_units
from binary import convert_units
Quickstart
from binary import BinaryUnits, DecimalUnits, convert_units
# Basic conversion from KB to MB (binary units)
amount, unit = convert_units(1536, BinaryUnits.KB, BinaryUnits.MB)
print(f"1536 KB is {amount} {unit}")
# How much actual storage your new hard drive has (Decimal TB to Binary TiB)
amount, unit = convert_units(4, DecimalUnits.TB, BinaryUnits.TB)
print(f"4 Decimal TB is {amount:.2f} {unit}")
# Human readable output (converts to highest possible unit)
kubernetes_ingest_bytes_per_second = 26666666666 # Example large number of bytes
amount, unit = convert_units(kubernetes_ingest_bytes_per_second)
print(f"Incoming traffic: {amount:.2f} {unit}/s")