Les Snippets

Connexion

Conversion unités/octets

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 30/07/2006 05:40:33 et initié par PCPT [Liste]
Date de mise à jour : 30/07/2006 05:51:42
Vue : 14848
Catégorie(s) : Trucs & Astuces
Langages dispo pour ce code :
- VB6, VBA
- Assembleur x86



Langage : VB6 , VBA
Date ajout : 30/07/2006
Posté par PCPT [Liste]
Function O2T(ByVal Value As DoubleOptional ByVal ValueType As Byte = 0, Optional ByVal ValueFinal As Byte = 2) As Double 
    O2T = Value * 1024 ^ (CInt(ValueType) - ValueFinal) 
End Function 

' Un petit exemple
Sub Command1_Click() 
    'Convertion de la taille d'un fichier : Octet -> Mega-Octet
    MsgBox O2T(FileLen("C:\Fichier.txt"), 1, 2) 
    MsgBox O2T(1024, 0, 1)  'Retourne 1
End Sub
Remarque :
code posté par 'Coke Hax', transféré de CodeS-SourceS

' Voici le tableau :
'Nom      |o | Ko | Mo | Go | To | Po | Eo | Zo | Yo
'      |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
'Position |0 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08

' Voici la formule :
' Unite * 1024^(position_Unite - position_finale) = Unite_converti

' Exemple :
' Mo -> Go
' 1024 (Mo) * 1024^(2-3) = 1
Langage : Assembleur x86
Date ajout : 31/07/2006
Posté par _dune2_ [Liste]
;// Tableau repris de 'Coke Hax':
 ;//Nom      |o | Ko | Mo | Go | To | Po | Eo | Zo | Yo
 ;//         |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
 ;//Position |0 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08
 
 .section .data
 pos_depart:    .long 1;                     // position d'unité de départ
 pos_finale:      .long 3;                     // position d'unité final
 valeur:            .long 1024*1024*25; // valeur à convertir
 
 .section .text
 unit:
     mov pos_depart,%ecx;    // charge position finale dans ECX
     sub    pos_finale,%ecx;   // calcul la différence d'exposant (depart-finale) dans ECX
     mov    $10,%eax;            // ajustement en produits de *2^10 (*1024)
     mul    %ecx;                    // -> *2^10
     mov %eax,%ecx;            // on remet le resultat dans ECX pour faire des décalages de bits
     cmp $0,%ecx;                 // le resultat de mul et de mov ne permettent pas tester SF.
     jl    diviser;                      // si c'est négatif, il faut diviser par un multiple de 2
 multiplier:                            // si c'est positif, il faut multplier par un multiple de 2
     sall %cl,valeur;               // on multiplie EDX par 2^CL (CL=LSB de ECX ce qui largement suffisant)
     jmp    fin;                        // on saute la division
 diviser:                               //
     neg  %ecx;                    // on ramene ECX positif
     sarl %cl,valeur;              // on divise EDX par 2^CL (CL=LSB de ECX ce qui largement suffisant)
 fin:                                    // Fin du programme, EDX contient le résultat ...
 

Remarque :
Les indexes d'unités sont repris du tableau de 'Coke Hax' pour conserver l'esprit.
L'utilisation d'indexes en multiple de 10 simplifierai grandement le code puisque la multiplication disparaitrait (suppression de "mov $10,%eax;" jusqu'à "cmp $0,%ecx;" inclus).

Snippets en rapport avec : Taille, Conversion, Octets



Codes sources en rapport avec : Taille, Conversion, Octets

{Visual Basic, VB6, VB.NET, VB 2005} TRADUCTEUR VB6.VBP EN VB5.VBP
Ben oui ! Il y a encore des utilisateurs de VB5. C'est ce qui m'a amené à faire ce petit programm...

{Visual Basic, VB6, VB.NET, VB 2005} TAILLE D'UN LECTEUR OU D'UN REPERTOIRE EN OCTETS
Ces lignes de code permetent de retourner la taille(en octet) d'un lecteur logique,ou d'un répertoir...

{PHP} FORMATER DES MILLISECONDES AU FORMAT HH:MM:SS:MMM
Bizarre, mais je n'ai pas trouvé de soluce à mon besoin express. Je me suis donc fait la fonction v...

{Visual Basic, VB6, VB.NET, VB 2005} UN PHOTO RESIZEUR
tout ce passe dans un userform c'est une petite application "exel"vba qui a pour but de reduire l...

{C / C++ / C++.NET} CONVERTISSEUR NOMBRE ARABE => NOMBRE ROMAIN (1 À 4999)
Convertisseur de nombre arabe en nombre romain (de 1 à 4999). Aucune bibliothèque mathématique ut...

{C# / C#.NET} SIMPLECONV - APPLICATION DE CONVERSION MONÉTAIRE AVEC TAUX ET DEVISES DYNAMIQUES
SimpleConv est une petite application de conversion monétaire appelant un WebService disponible sur ...

{Foxpro} AUTOMATION DE WORD AVEC VFP
Nécessite VFP >= 8 Facilite l'automation de Word Ferme automatiquement les documents ouverts et Wo...

{PHP} IP CALCULATOR
Cette classe est la version PHP du programme unix ipcalc. Il permet de calculer à partir d'une adres...

{C# / C#.NET} REMPLACER UNE SÉQUENCE DE BYTE
Cette méthode sert à remplacer simultanément dans une séquence byte[] A toutes les sous-séquences by...

{Visual Basic, VB6, VB.NET, VB 2005} EXPORT TABLEAU EXCEL EN BBCODE
Petite source en vba excel permettant d'exporter le tableau Excel en BBcode (tableau basic, seul l'é...