半年前,我已经完全像这样做了,只是为了获得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位。希望你可以等到明天。
编辑
给你:https://github.com/fabian-barney/Utils
不要怪我的目录结构 - 我仍然不familar使用Git呢。 :)
这将做整数算术和溢出,如果高于1千兆字节。我建议让这些常量中至少有一个具有尾部“L”或演员阵容。 – Gray 2011-12-13 22:20:38
当然,但明确的乘法是我试图避免的。 – 2011-12-13 22:58:08
好点,固定在上面。与这些常量无关,但会高于255 Mb。明确的类型现在可以在以后避免麻烦。 – 2011-12-13 22:58:23