J'aurais juste voulu savoir comment vous feriez ca mais en plus rapide (et en plus propre) :
Code : Tout sélectionner
texte$="01020345f8c6deffcb"
For i=1 To Len(texte$) Step 2
a$="$"+Mid(texte$,i,2)
Debug a$+" = "+Str(Val(a$))
Next

Code : Tout sélectionner
texte$="01020345f8c6deffcb"
For i=1 To Len(texte$) Step 2
a$="$"+Mid(texte$,i,2)
Debug a$+" = "+Str(Val(a$))
Next
Ben ... nonSPH a écrit : jeu. 11/août/2022 11:31 J'aurais juste voulu savoir comment vous feriez ca mais en plus rapide (et en plus propre)
Code : Tout sélectionner
texte$=UCase("01020345f8c6deffcb")
;
deb=01 ; active ou non l'affichage des valeurs
If deb=1
iter=100
Else
iter=100000
EndIf
Debug "methode sph"
k=ElapsedMilliseconds()
For z=1 To iter
For i=1 To Len(texte$) Step 2
a$="$"+Mid(texte$,i,2)
result =Val(a$)
If deb : Debug result : EndIf
Next
Next
sph.i= ElapsedMilliseconds()-k
;
Debug "methode tableau"
Dim cha(255)
For A=48 To 57 ; numbers
cha(a)=a-48 ; 0 to 9
Next
For a=65 To 70; a to f
cha(a)=a-55 ; 10 to 15
cha(a+32)=a-55
Next
k=ElapsedMilliseconds()
For z=1 To iter
For i=1 To Len(texte$) Step 2
result=cha(Asc(Mid(texte$,i,1)))*16+cha(Asc(Mid(texte$,i+1,1)))
If deb : Debug result : EndIf
Next
Next
tableau.i= ElapsedMilliseconds()-k
Debug "methode map"
NewMap Hx.i()
For z=0 To 255
; Debug RSet(Hex(z),2,"0")
AddMapElement(Hx(),RSet(Hex(z),2,"0"))
Hx()=z
Next
k=ElapsedMilliseconds()
For z=1 To iter
For i=1 To Len(texte$) Step 2
FindMapElement(hx(),Mid(texte$,i,2))
result= hx()
If deb : Debug result : EndIf
Next
Next
Debug "methode map"
Debug ElapsedMilliseconds()-k
Debug "methode tableau"
Debug tableau
Debug "methode sph"
Debug sph
Code : Tout sélectionner
texte$=UCase("01020345f8c6deffcb")
;
deb=0 ; active ou non l'affichage des valeurs
If deb=1
iter=100
Else
iter=100000
EndIf
;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
Debug "methode sph"
k=ElapsedMilliseconds()
For z=1 To iter
For i=1 To Len(texte$) Step 2
a$="$"+Mid(texte$,i,2)
result =Val(a$)
If deb : Debug result : EndIf
Next
Next
sph.i= ElapsedMilliseconds()-k
;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
Debug "methode tableau"
k=ElapsedMilliseconds()
Dim cha(255)
For A=48 To 57 ; numbers
cha(a)=a-48 ; 0 to 9
Next
For a=65 To 70; a to f
cha(a)=a-55 ; 10 to 15
cha(a+32)=a-55
Next
For z=1 To iter
For i=1 To Len(texte$) Step 2
result=cha(Asc(Mid(texte$,i,1)))*16+cha(Asc(Mid(texte$,i+1,1)))
If deb : Debug result : EndIf
Next
Next
tableau.i= ElapsedMilliseconds()-k
;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
Debug "methode map"
k=ElapsedMilliseconds()
NewMap Hx.i()
For z=0 To 255
; Debug RSet(Hex(z),2,"0")
AddMapElement(Hx(),RSet(Hex(z),2,"0"))
Hx()=z
Next
For z=1 To iter
For i=1 To Len(texte$) Step 2
FindMapElement(hx(),Mid(texte$,i,2))
result= hx()
If deb : Debug result : EndIf
Next
Next
;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;
Debug ";;;;;;;;;;;;;;;;;;;;;"
Debug "methode map"
Debug ElapsedMilliseconds()-k
Debug "methode tableau"
Debug tableau
Debug "methode sph"
Debug sph
Code : Tout sélectionner
a.q = $0102030405060708
For c = 56 To 0 Step -8
Debug (a >> c) & $FF
Next
Code : Tout sélectionner
texte$="01020345f8c6deffcb"
Code : Tout sélectionner
Global texte$=UCase("01020345f8c6deffcb")
;
opt=0
If #PB_Compiler_Debugger : opt=1 : EndIf
iter=1
If opt = 0 : iter = 1000000 : EndIf
;----------------------------------------------------------
;Debug "methode sph"
k=ElapsedMilliseconds()
For z=1 To iter
lg= Len(texte$)
For i=1 To lg Step 2
a$="$"+Mid(texte$,i,2)
result =Val(a$)
Next
Next
sph.i= ElapsedMilliseconds()-k
;----------------------------------------------------------
;Debug "methode tableau"
Dim cha(255)
For A=48 To 57 ; numbers
cha(a)=a-48 ; 0 to 9
Next
For a=65 To 70; a to f
cha(a)=a-55 ; 10 to 15
cha(a+32)=a-55
Next
k=ElapsedMilliseconds()
For z=1 To iter
lg= Len(texte$)
For i=1 To lg Step 2
result=cha(Asc(Mid(texte$,i,1)))*16+cha(Asc(Mid(texte$,i+1,1)))
Next
Next
tableau.i= ElapsedMilliseconds()-k
;----------------------------------------------------------
;Debug "methode map"
NewMap Hx.i()
For z=0 To 255
AddMapElement(Hx(),RSet(Hex(z),2,"0"))
Hx()=z
Next
k=ElapsedMilliseconds()
For z=1 To iter
lg= Len(texte$)
For i=1 To lg Step 2
FindMapElement(hx(),Mid(texte$,i,2))
result= hx()
Next
Next
mapt = ElapsedMilliseconds()-k
;----------------------------------------------------------
;Debug "pointer"
k=ElapsedMilliseconds()
p=@texte$
Dim cha(255)
For A=48 To 57 ; numbers
cha(a)=a-48 ; 0 to 9
Next
For a=65 To 70; a to f
cha(a)=a-55 ; 10 to 15
cha(a+32)=a-55
Next
For z=1 To iter
lg= Len(texte$)
For i=1 To lg Step 2
r2 = cha(PeekA(p+(i-1)<<1))<<4 + cha(PeekA(p+i<<1))
If opt = 1
a$="$"+Mid(texte$,i,2)
result =Val(a$)
Debug result
Debug r2
Debug "-----"
EndIf
Next
Next
my.i= ElapsedMilliseconds()-k
t1$="methode map"+Chr(13)
t2$=Str(mapt)+Chr(13)
t3$="methode tableau"+Chr(13)
t4$=Str(tableau)+Chr(13)
t5$="methode sph"+Chr(13)
t6$=Str(sph)+Chr(13)
t7$="pointer"+Chr(13)
t8$=Str(my)+Chr(13)
t$=t1$+t2$+t3$+t4$+t5$+t6$+t7$+t8$
MessageRequester("",t$)
Code : Tout sélectionner
convert(@a$, Len(a$), @e(0) )
Code : Tout sélectionner
LenA / 2
While LenA
LenA - 1
*dest\a = homeMadeMap(*source\L)
*source + 4
*dest + 1
Wend
Code : Tout sélectionner
Procedure convert(*source.long, LenA, *dest.ascii)
Static u
If u = 0
Global Dim homeMadeMap.a('ff')
For u = 0 To 255
B$ = RSet(Hex(u), 2, "0")
homeMadeMap(PeekL(@B$) | $200020) = u
Next
EndIf
;-)
LenA / 2
While LenA
LenA - 1
*dest\a = homeMadeMap(*source\L)
*source + 4
*dest + 1
Wend
EndProcedure
Code : Tout sélectionner
a$ = "ca55ebaffe"
L = Len(a$)
Dim code.a(L / 2)
convert(@a$, L, @code(0) ) ; oublie pas le zéro '0'