Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
904 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

Défi: optimisation d'une fonction de convertion (Bin => Dec)

n°937153
dreameddea​th
Posté le 04-01-2005 à 19:03:33  profilanswer
 

Reprise du message précédent :
donc c'est pas du VBA comme le liens que tu donnes dans VB l'integer c'est du 32 bits (soit environ 4 milliard de valeurs possibles)

mood
Publicité
Posté le 04-01-2005 à 19:03:33  profilanswer
 

n°937165
mareek
Et de 3 \o/
Posté le 04-01-2005 à 19:13:07  profilanswer
 

dreameddeath a écrit :

donc c'est pas du VBA comme le liens que tu donnes dans VB l'integer c'est du 32 bits (soit environ 4 milliard de valeurs possibles)


Non.

Citation :

Integer data type
A data type that holds integer variables stored as 2-byte whole numbers in the range -32,768 to 32,767. The Integer data type is also used to represent enumerated values. The percent sign (%) type-declaration character represents an Integer in Visual Basic.


http://msdn.microsoft.com/library/ [...] tatype.asp
 
Et puis si tu ne me crois pas, tu n'as qu'à faire le test ;)


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°937270
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-01-2005 à 21:28:06  profilanswer
 

Pour la version dépliée, au lieu de faire des :
 

Code :
  1. If
  2.    ...
  3. Else
  4.    ...
  5. End If
  6. If
  7.    ...
  8. Else
  9.    ...
  10. End If
  11. If
  12.    ...
  13. Else
  14.    ...
  15. End If


 
Essaie plutôt :
 

Code :
  1. If
  2.    ...
  3. Else
  4.    ...
  5. Else If
  6.    ...
  7. Else If
  8.    ...
  9. End If

   
 
Tu devrais gagner du temps de façon signaificative.
 
Tu peux aussi faire un Select Case

n°937275
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-01-2005 à 21:32:06  profilanswer
 

Sinon, pour la boucle, perso j'aurais fait :
 

Code :
  1. Private nPowerArray(1 to 9) as long
  2. Private Function Bin9BitsToNum(sBinary As String) As Long
  3.    Dim nValue As Long
  4.    Dim nCpt As Long
  5.    
  6.    nValue = 0
  7.    nCpt = 9
  8.    While nCpt > 0
  9.        nValue = nValue + nPowerArray(nCpt) ^ (AscW(Mid$(sBinary, nCpt, 1)) - 30)
  10.        nCpt = nCpt - 1
  11.    Wend
  12.    
  13.    Bin9BitsToNum = nValue
  14. End Function
  15. Private Sub Class_Initialize()
  16.    nLevel = 1
  17.    nPowerArray(1) = 256
  18.    nPowerArray(2) = 128
  19.    nPowerArray(3) = 64
  20.    nPowerArray(4) = 32
  21.    nPowerArray(5) = 16
  22.    nPowerArray(6) = 8
  23.    nPowerArray(7) = 4
  24.    nPowerArray(8) = 2
  25.    nPowerArray(9) = 1
  26. End Sub

n°937282
FlorentG
Unité de Masse
Posté le 04-01-2005 à 21:45:16  profilanswer
 

Ah ouais, c'est une idée, ça donne quoi ? (Surtout au niveau de la puissance, si il optimise ça bien quand ça donne 0)

n°937300
dreameddea​th
Posté le 04-01-2005 à 22:00:54  profilanswer
 

heu pour le coup de IF ELSE IF ... ça marche pas : il faut faire tout les tests (il peut y avoir plusieurs 1 dans un nombre binaire ;) )

n°937303
Arjuna
Aircraft Ident.: F-MBSD
Posté le 04-01-2005 à 22:08:53  profilanswer
 

dreameddeath a écrit :

heu pour le coup de IF ELSE IF ... ça marche pas : il faut faire tout les tests (il peut y avoir plusieurs 1 dans un nombre binaire ;) )


arf, oui, y'a plus de boucle :D

n°955157
Vincent VE​GA
connu aussi comme La_Fouine
Posté le 17-01-2005 à 23:35:48  profilanswer
 

transforme en hex puis identifie chaque car par l'association binaire et mets ensuite tes trois chaines bout à bout.
 
ou mieux créé un tableau qui te ressort du texte en fct de l'indice.
 
genre ce qui suit (la table est créée qu'une seule fois):
 
 
Dim Table(16)   As String
 
Private Sub Command1_Click()
 
entier_a_convertir = 511
 
txt = Hex(entier_a_convertir)
 
Select Case (Len(txt))
    Case 1
        chiffre_converti = "00000" + Table(CInt("&h" + txt))
    Case 2
        chiffre_converti = "0" + Table(CInt("&h" + Mid(txt, 1, 1))) + Table(CInt("&h" + Mid(txt, 2, 1)))
    Case 3
        chiffre_converti = "1" + Table(CInt("&h" + Mid(txt, 2, 1))) + Table(CInt("&h" + Mid(txt, 3, 1)))
End Select
     
End Sub
 
Private Sub Form_Load()
    Table(0) = "0000"
    Table(1) = "0001"
    Table(2) = "0010"
    Table(3) = "0011"
    Table(4) = "0100"
    Table(5) = "0101"
    Table(6) = "0110"
    Table(7) = "0111"
    Table(8) = "1000"
    Table(9) = "1001"
    Table(10) = "1010"
    Table(11) = "1011"
    Table(12) = "1100"
    Table(13) = "1101"
    Table(14) = "1110"
    Table(15) = "1111"
End Sub

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[C] Convertion double -> dec -> hexComment faire pour qu'une fonction renvoie un tableau?
executer un scrpt en fonction de l'ip de l'userFonction asm utilisable en C++, linker error...
[Maple] cherche une fonction qui retourne la taille d'une tableSocket : la fonction connect.
help: probleme de fonction .h en Cbesoin d'aide pour convertion html-->css
Question à propos d'une fonction du htacces de PHPNuke 
Plus de sujets relatifs à : Défi: optimisation d'une fonction de convertion (Bin => Dec)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR