Я делал это точно так же, как это полгода назад, просто для удовольствия, вдохновленного перечислением TimeUnit.
Я выложу его на GitHub завтра. Он содержит два перечисления: BitUnit
и ByteUnit
. Оба также поддерживают конвертацию между собой. ByteUnit поддерживает 2-префиксные префиксы, а также 10-префиксы. (Константы и методы перечисления в ByteUnit
используют терминологию IEC 80000-13 для префиксов.)
Использование выглядит следующим образом:
System.out.println(BitUnit.KBIT.toKiB(16000));
System.out.println(ByteUnit.GIB.toMB(1));
System.out.println(ByteUnit.GIB.toMiB(1));
System.out.println(ByteUnit.GB.toMB(1));
System.out.println(ByteUnit.GB.toMiB(1));
... и распечатывает:
1953.125
1073.741824
1024.0
1000.0
953.67431640625
Для методов преобразования между битами и байтами вы перегрузили методы, чтобы указать размер слова, отличный от 8 бит на байт.
Надеюсь, вы можете подождать до завтра.
EDIT
Вот вы: https://github.com/fabian-barney/Utils
Не вините меня за структуру каталогов - я еще не знаком с Git. :)