Maison >Java >javaDidacticiel >Comment convertir des octets en format lisible par l'homme en Java ?

Comment convertir des octets en format lisible par l'homme en Java ?

DDD
DDDoriginal
2024-12-02 12:09:15293parcourir

How to Convert Bytes to Human-Readable Format in Java?

Comment convertir la taille des octets en un format lisible par l'homme en Java

Déterminer la représentation lisible par l'homme de la taille des octets est une exigence courante dans diverses applications informatiques. Java offre un moyen pratique d'accomplir cette transformation en utilisant les méthodes suivantes :

SI (1 k = 1 000)

La méthode suivante convertit la taille des octets en un format lisible par l'homme à l'aide du Système international de 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 (1 Ki = 1 024)

Pour les scénarios où les préfixes binaires sont préférés, la méthode suivante fournit la conversion :

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());
}

Exemple de sortie

Les extraits de code fournis génèrent l'exemple de sortie suivant :

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)

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn