begin process at 2012 05 27 21:59:21
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > CALCUL ORDRE DE GRANDEUR AUTOMATIQUE POUR TAILLE DE FICHIER (OCTET, KO, MO, GO, TO...)

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


 Information sur la source

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :24/06/2004 Date de mise à jour :11/04/2005 17:48:26 Vu :6 211

Auteur : GRenard

Ecrire un message privé
Site perso
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

 Description

Fonction permettant de retourner un ordre de grandeur pour la taille en octet.

Source

  • <?php
  • function unite($octet, $round){
  • $unite_spec = array('octets','Ko','Mo','Go','To');
  • $count=0;
  • $c = count($unite_spec);
  • while($octet>=1024 && $count<$c-1){
  • $count++;
  • $octet/=1024;
  • }
  • if($round>=0){
  • $arr = pow(10,$round);
  • $number = round($octet*$arr)/$arr;
  • } else {
  • $number = $octet;
  • }
  • return($number.' '.$unite_spec[$count]);
  • }
  • ?>
<?php
function unite($octet, $round){
	$unite_spec = array('octets','Ko','Mo','Go','To');
	$count=0;
	$c = count($unite_spec);
	while($octet>=1024 && $count<$c-1){
		$count++;
		$octet/=1024;
	}
	if($round>=0){
		$arr = pow(10,$round);
		$number = round($octet*$arr)/$arr;
	} else {
		$number = $octet;
	}
	return($number.' '.$unite_spec[$count]);
}
?>

 Conclusion

J'ai déjà trouvé une fonction similaire sur ce site mais "mal" faite.
Celle-ci est drolement simple à comprendre et fonctionne très bien ;)
J'ai maintenant rajouté des options pour empècher le dépassement de capaciter au cas ou il y aurait des fichiers plus gros que 1024 To... Ce qui est physiquement impossible (pour le moment ;)), mais si vous utilisez cette fonction avec l'addition de tous vos fichiers...
Si vous êtes soucieux de la rapidité, vous n'avez qu'à enlever cette option.

J'ai rajouté aussi une fonction pour arrondir le nombre obtenue... Si vous ne voulez pas arrondir, mettez $round < à 0.


 Historique

11 avril 2005 17:41:58 :
Correction du dépassement du tableau. Ajout d'une fonction pour arrondir.
11 avril 2005 17:48:26 :

 Sources du même auteur

Source avec Zip Source avec une capture LECTURE/ÉCRITURE DE TAGS ID3 VERSION 1 ET VERSION 2
Source avec Zip GÉRER LES ÉCHAPPEMENTS DE CARACTÈRES SUR TABLEAUX MULTIDIMEN...
Source avec Zip Source avec une capture PROJECT SELECTOR (SÉLECTION FACILE DE PROJET AVEC APACHE) ET...
Source avec Zip Source avec une capture STATISTIQUES DE VOTRE PROJET (NOMBRE DE DOSSIERS, FICHIERS, ...
Source avec Zip Source avec une capture AFFICHAGE TABLEAU AVEC TEMPLATE CLASSE

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

Commentaires et avis

Commentaire de matrey le 24/06/2004 10:57:10

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...

Commentaire de LocalStone le 24/06/2004 12:38:29

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.
++

Commentaire de Taka_s_tiger le 24/06/2004 16:47:13

matrey&gt; 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.

Commentaire de defkrie le 24/06/2004 21:25:46

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.

Commentaire de Magicking le 07/07/2004 00:33:42

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

Commentaire de GRenard le 07/07/2004 02:14:15

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

Commentaire de defkrie le 07/07/2004 11:31:34

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.

  

Commentaire de defkrie le 07/07/2004 11:37:09

vous en avez la preuve dans presque tous les machines qui vous entourent.....

Commentaire de Magicking le 07/07/2004 16:18:14

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

Commentaire de GRenard le 07/07/2004 19:05:15

Différent de Kb et Ko ! attention à ca.

Commentaire de jb_gfx le 11/04/2005 12:18:49

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?).

Commentaire de jb_gfx le 11/04/2005 12:26:41

Il fallait bien sûr lire :

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

($count inférieur à 4).
Maudite touche majuscule... :P

Commentaire de GRenard le 11/04/2005 17:48: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.

Commentaire de seyvapul le 19/02/2008 17:38:02

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.

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales