Maison  >  Article  >  développement back-end  >  Comment formater des octets en unités lisibles par l'homme avec précision ?

Comment formater des octets en unités lisibles par l'homme avec précision ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-19 02:30:03688parcourir

How to Format Bytes into Human-Readable Units with Precision?

Formatage des octets avec précision

Dans divers scénarios, il devient nécessaire de formater les valeurs des octets en unités lisibles par l'homme telles que les kilo-octets, les mégaoctets, et des gigaoctets. Par exemple, l'affichage de la taille des fichiers sur des pages Web nécessite le formatage des octets dans l'unité appropriée.

Solution : utiliser une fonction de formatage

Une solution efficace consiste à utiliser une fonction de formatage qui prend des octets en entrée et renvoie la chaîne formatée. Voici un exemple de fonction PHP qui permet d'obtenir cela :

function formatBytes($bytes, $precision = 2) {
    $units = array('B', 'KB', 'MB', 'GB', 'TB');

    $bytes = max($bytes, 0);
    $pow = floor(($bytes ? log($bytes) : 0) / log(1024));
    $pow = min($pow, count($units) - 1);

    // Uncomment one of the following alternatives
    // $bytes /= pow(1024, $pow);
    // $bytes /= (1 << (10 * $pow));

    return round($bytes, $precision) . $units[$pow];
}

Explication

Cette fonction prend deux paramètres :

  • $bytes : Le taille du fichier en octets
  • $precision : Le nombre de décimales à display

La fonction utilise un tableau $units pour représenter les unités (octets, kilo-octets, mégaoctets, gigaoctets et téraoctets). Elle calcule la puissance $pow représentant l'unité appropriée en divisant le logarithme de $bytes par le logarithme de 1024. La puissance maximale est plafonnée à l'unité la plus élevée du tableau.

La fonction divise ensuite la valeur de l'octet par la puissance appropriée pour le convertir à l’unité souhaitée. Enfin, il arrondit la valeur à la précision spécifiée et ajoute l'unité correspondante du tableau $units.

Par exemple, si $bytes vaut 5 222 937, la fonction le formatera comme « 5,01 Mo ».

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