Conversion de la taille des octets en formats lisibles par l'homme, tels que "1 Ko " ou " 1 Mo " est une tâche courante dans la programmation Java. Bien que vous puissiez souvent écrire vos propres méthodes utilitaires pour cela, il existe également des solutions réutilisables disponibles.
La bibliothèque Apache Commons Lang fournit des méthodes statiques méthodes de conversion d'octets tailles :
Voici les implémentations de ces méthodes :
Unités SI :
public static String humanReadableByteCountSI(long bytes) { if (-1000 < bytes && bytes < 1000) { return bytes + " B"; } CharacterIterator ci = new StringCharacterIterator("kMGTPE"); while (bytes <= -999_950 || bytes >= 999_950) { bytes /= 1000; ci.next(); } return String.format("%.1f %cB", bytes / 1000.0, ci.current()); }
Binaire Unités :
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; ci.next(); } value *= Long.signum(bytes); return String.format("%.1f %ciB", value / 1024.0, ci.current()); }
Le tableau suivant montre la sortie pour différentes tailles d'octets en utilisant à la fois les méthodes SI et binaires :
Byte Size | SI | Binary |
---|---|---|
0 | 0 B | 0 B |
27 | 27 B | 27 B |
1024 | 1.0 kB | 1.0 KiB |
1728 | 1.7 kB | 1.7 KiB |
1855425871872 | 1.9 TB | 1.7 TiB |
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!