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

matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004 - 24 juin 2004 à 10:57
seyvapul Messages postés 39 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

seyvapul Messages postés 39 Date d'inscription vendredi 15 juillet 2005 Statut Membre Dernière intervention 4 juin 2017
19 févr. 2008 à 17:38
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 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
11 avril 2005 à 17:48
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
11 avril 2005 à 12:26
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
11 avril 2005 à 12:18
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 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
7 juil. 2004 à 19:05
Différent de Kb et Ko ! attention à ca.
Magicking Messages postés 195 Date d'inscription vendredi 13 octobre 2000 Statut Membre Dernière intervention 8 juillet 2004
7 juil. 2004 à 16:18
Je suis d'accord avec toi defkrie mais les standards sont les standards... ce n'est pas à nous qu'il faut l'expliquer...

Source:
http://www.commentcamarche.net/base/binaire.php3
http://physics.nist.gov./cuu/Units/binary.html
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
7 juil. 2004 à 11:37
vous en avez la preuve dans presque tous les machines qui vous entourent.....
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
7 juil. 2004 à 11:31
petit rappel d'info industriel pour les nuls
La mémoire n'est qu'un ensemble de 1 et de 0 appelés «bits». Tout comme si vous comptiez sur vos doigts, c'est probablement de là que vient le terme «digital». Lorsqu'ils sont groupés ensembles, vous pouvez en compter un grand nombre, ou représenter tous les caractères de l'alphabet (si vous utilisez un motif unique de 1 et de 0 pour représenter chaque caractère). La mémoire des ordinateurs possède un tas de ces bits (digits).

Les bits qui sont groupés par 8, sont appelés octets (byte en anglais). Chaque octet renferme une valeur entre 0 et 255, où est utilisé pour représenter un caractère de l'alphabet (ou un symbole). En regroupant des octets vous pouvez créer de gros nombres, ou des pages de caractères (mots, phrases, paragraphes, etc.).

Les octets sont groupés en kilo-octets ou «K», ce n'est pas équivalent à 1000 octets, mais presque. Ces groupements peuvent être en millions (mega-octets), milliards (giga-octets), trillions (tera-octets), quadrillons (peta-octets), et ainsi de suite.

Les gens pensent habituellement en base 10 -- 10, 100, 1000 et ainsi de suite. Alors nous utilisons ces groupements pour compter les groupements dans les ordinateurs. Cependant les ordinateurs utilisent la puissance 2 (et non pas 10). Alors le nombre le plus près de 1000 à la puissance 2 est 1024 (2 à la puissance 10). La majorité des gens arrondissent 1024 à 1000 et appellent cela 1K, mais cette erreur d'arrondissement sème la confusion. Examinez la table qui suit et voyez ce qui se passe.





Nom
La bonne manière
La manière paresseuse
Kilo-octets 2^10 = 1,024 octets 1,000 (2.4% d'erreur)

Mega-octets 2^20 = 1,048,576 octets 1,000,000 (4.8% d'erreur )

Giga-octets 2^30 = 1,073,741,824 octets 1,000,000,000 (7.4% d'erreur )

Tera-octets 2^40 = 1,099,511,627,776 octets 1,000,000,000,000 (9.9% d'erreur )

Peta-octets 2^50 = 1,125,899,906,842,674 octets 1,000,000,000,000,000 (12.6% d'erreur )


Alors souvenez-vous que 1K dans le langage des ordinateurs équivaut à 1024 octets et non pas à 1000.
cs_GRenard Messages postés 1662 Date d'inscription lundi 16 septembre 2002 Statut Membre Dernière intervention 30 juillet 2008 1
7 juil. 2004 à 02:14
C'est moi qui ait raison, prend n'importe quel fichier avec windows ou linux la... c'est bien 1024... bon pour etre plus précis, je pourrais changer et marquer : bytes, kb, mb, gb, tb
Magicking Messages postés 195 Date d'inscription vendredi 13 octobre 2000 Statut Membre Dernière intervention 8 juillet 2004
7 juil. 2004 à 00:33
1Kilo = 1024 Octet n'est plus standard depuis 1998
Maintenant 1Kilo = 1000 Octet

C'est con mais c'est comme ça :/

Source:
http://www.commentcamarche.net/base/binaire.php3
http://physics.nist.gov./cuu/Units/binary.html
defkrie Messages postés 435 Date d'inscription vendredi 20 septembre 2002 Statut Membre Dernière intervention 20 novembre 2004
24 juin 2004 à 21:25
Je confirme un kilo fait bien 1024 octets, cest de l'informatique (revoir les bits et les puissances de deux) or certains voyant kilo ce sont dis tiens sa doit etre 1000.
frachement pas mal les gas cest les machines pensés comme cela elles auraient bien des problèmes.
Taka_s_tiger Messages postés 32 Date d'inscription samedi 31 janvier 2004 Statut Membre Dernière intervention 5 juillet 2006
24 juin 2004 à 16:47
matrey> je ne crois pas qu'il existe de "norme publique" et que c'est des gens qui ne sont pas interessé a aprendre les conventions précises, 1024 dans ce cas ci, qui ce fie au préfixe kilo ou mega..qui signifit mille ou million.
LocalStone Messages postés 514 Date d'inscription mercredi 19 mars 2003 Statut Membre Dernière intervention 1 mars 2009
24 juin 2004 à 12:38
Je crois que Matrey à raison ... Enfin quoi qu'il en soit, j'aime bien ta façon de penser les lignes du code ... C'est stupide, mais bon ... Bah voilà quoi.
LS.
++
matrey Messages postés 399 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 6 septembre 2004
24 juin 2004 à 10:57
En théorie le kilo octet fait 1024 octets, mais il me semble si je dis pas de bétises que pour le grand public la "norme" a été arrondie à 1000... Je ne sais pas exactement ce qu'il en est actuellement...
Rejoignez-nous