Hexa et chaine

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Voilà ce que j'avais fait (la recherche sur les mots "hexa" ou "conversion" permettait de le retrouver) :

Code : Tout sélectionner

Procedure ValH(hs$) 
; Zapman 
; à partir d'une procédure de El Choni 
; From a El Choni proc 
  result = 0 
  p=0 
  hs$ = UCase (hs$)
  If Left(hs$,1)="$" : d=2 : else : d=1 :  EndIf 
  For t = Len(hs$) To d Step -1 
    ByteValue = Asc(Mid(hs$,t,1))
    If ByteValue>'9' 
      If ByteValue>'F' : ByteValue-87 : Else : ByteValue-55 : EndIf 
    Else 
      ByteValue-48 
    EndIf 
    result = result + (ByteValue<<(4*p)) 
    p +1 
  Next 
  ProcedureReturn result 
EndProcedure 

Debug valH("$FF")
C'est trés nettement moins élégant que la version de Brossden. Ca a juste de le mérite de gérer les chaines commençant par $ ($E8, par exemple) et d'être (peut-être) un peu plus rapide à l'execution (mais c'est par sûr).
Dernière modification par ZapMan le ven. 03/déc./2004 12:14, modifié 2 fois.
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ce qui marche également avec la procedure de Brossden
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Normallement, c'est vrai que l'on devrait écrire cette procédure à la manière de Zapman mais l'utilisation de FindString permet facilement de changer de base et de plus cette fonction est extrèmement rapide.

Pour rechercher le dernier mot d'une chaine de caractère de plus de 1Mo, il faut 10ms.

:)
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

Dès que j'ai le temps, je ferais un test de ces différentes procédures, histoire de voir s'il y a de grandes différences, et puis on peut toujours être surpris!

:)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

j'ai déjà fait l'essai entre la mienne et celle de brossden.

ça donne un différence de 33 % environ en faveur de la procedure de Brossden
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'obtiens les résultats suivants pour 500 000 appel de procédure,
voici deux résultats par procédure en ms pour 6 caractères Hexa:

Comtois 470 / 450
Chris 861 / 851
Le Soldat 1232 / 1232
Nico 661 / 651
Brossden 791 / 812
Zapman 811 / 841

:)
Dernière modification par nico le ven. 03/déc./2004 22:13, modifié 2 fois.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message par nico »

J'obtiens les résultats suivants pour 500 000 appel de procédure,
voici deux résultats par procédure en ms pour 8 caractères Hexa:

Comtois 561 / 541

Chris 1051 / 1072
Le Soldat 1502 / 1502
Nico 852 / 841
Brossden 1021 / 992
Zapman 1031 / 1042
Avatar de l’utilisateur
ZapMan
Messages : 460
Inscription : ven. 13/févr./2004 23:14
Localisation : France
Contact :

Message par ZapMan »

Comtois izzzzzzzzzz the winer !!!!!!!!!!
(ou plus exactement Froggerprogger, si je ne me trompe)

Mais au final, je propose de garger la procédure de Nico dans nos archives :
- elle est trés élégante
- elle est trés rapide
- elle est trés courte
- elle se comprend facilement

Si seulement tous nos codes correspondaient à cette description !!
Tout obstacle est un point d'appui potentiel.

Bibliothèques PureBasic et autres codes à télécharger :https://www.editions-humanis.com/downlo ... ads_FR.htm
Répondre