CALCUL ORDRE DE GRANDEUR AUTOMATIQUE POUR TAILLE DE FICHIER (OCTET, KO, MO, GO,

Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004
- - Dernière réponse : seyvapul
Messages postés
41
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017
- 19 févr. 2008 à 17:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23957-calcul-ordre-de-grandeur-automatique-pour-taille-de-fichier-octet-ko-mo-go-to

Afficher la suite 
seyvapul
Messages postés
41
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017
-
Une toute petite précision concernant la norme sur les unités mémoires des machines :
1 Ko avec un K majuscule c'est 1024 octets.
1 ko avec un k minuscule c'est 1000 octets.
Au delà, ce ne sont plus des puissance de 2 qui servent de multiplicateurs.
Ainsi 1M "Méga" c'est 1000 kilo et 1G "Giga" c'est 1000 méga de même que actuellement, 1T "Téra" c'est 1000 giga.

Ainsi :
1 To = 1000*1000*1000*1024 octets.
1 Go = 1000*1000*1024 octets.
1 Mo = 1000*1024 octets.
1 Ko = 1024 octets.

Pour info, même si globalement cela n'a que peu d'importance.
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
J'ai arrangé ça, tu as raison. J'ai expliqué pourquoi dans l'Explication finale. J'ai mis un count, c'est sur que j'aurais pu mettre aussi un 4 pour améliorer la rapidité.
J'ai rajouté une fonction d'arrondissement à la virgule... Je l'avais fait il y a longtemps mais je ne l'avais pas mis à jour ici :)
Donc le chiffre que vous entrez est le nombre de chiffre après la virgule que vous voulez ou -1 si vous ne voulez pas d'arrondi.
jb_gfx
Messages postés
8
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
16 octobre 2006
-
Il fallait bien sûr lire :

while(($octet>=1024) && ($count < 4)) {

($count inférieur à 4).
Maudite touche majuscule... :P
jb_gfx
Messages postés
8
Date d'inscription
mardi 30 mars 2004
Statut
Membre
Dernière intervention
16 octobre 2006
-
Merci pour cette sympathique "petite" fonction.

Par contre je me permet d'ajouter une petite correction (sans doute un oubli) :

Il faut remplacer la ligne :
while($octet>=1024){

Par :
while(($octet>=1024) && ($count > 4)) {

Sinon on a une erreur d'affichage (variable non définie) et il manque l'unité si on dépasse la dizaine de Tera octects. Bon ça doit pas arriver souvent mais comme cette fonction est générique et peut être utilisée pour autre chose qu'afficher des tailles de fichiers je pense qu'il est bon de corriger (de toute façon autant faire au mieux, non?).
cs_GRenard
Messages postés
1663
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1 -
Différent de Kb et Ko ! attention à ca.