Java 字节转人类可读形式

Java 字节转人类可读形式

public static String humanReadableByteCountBin(long bytes) {
long absB = bytes == Long.MIN_VALUE ? Long.MAX_VALUE : Math.abs(bytes);
if (absB < 1024) {
return bytes + " B";
}
long value = absB;
CharacterIterator ci = new StringCharacterIterator("KMGTPE");
for (int i = 40; i >= 0 && absB > 0xfffccccccccccccL >> i; i -= 10) {
value >>= 10; //右移10位
ci.next();
}
value *= Long.signum(bytes);
return String.format("%.1f %ciB", value / 1024.0, ci.current());
}

                          SI     BINARY

               0:        0 B        0 B
              27:       27 B       27 B
             999:      999 B      999 B
            1000:     1.0 kB     1000 B
            1023:     1.0 kB     1023 B
            1024:     1.0 kB    1.0 KiB
            1728:     1.7 kB    1.7 KiB
          110592:   110.6 kB  108.0 KiB
         7077888:     7.1 MB    6.8 MiB
       452984832:   453.0 MB  432.0 MiB
     28991029248:    29.0 GB   27.0 GiB
   1855425871872:     1.9 TB    1.7 TiB
9223372036854775807:  9.2 EB    8.0 EiB   (Long.MAX_VALUE)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容