Page 1 sur 1

HEX() vers CHR()

Publié : jeu. 21/févr./2008 14:44
par venom
bonjour,

voila je commence a me mélangé les pinceaux avec tout ces commandes strings()

donc j'ai voulu faire un programme qui convertis les chr() donc (abcd....) en hexadécimal.
sa c'est fait, mais le problème c'est que je n'arrive pas a refaire l'effet inverse :lol: . donc si quelqu'un pourrai y jeter un oeuil sa serai sympa.

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Frame3D_0
  #String_0
  #Button_0
  #String_1
  #Frame3D_1
  #String_2
  #Button_1
  #String_3
EndEnumeration

  If OpenWindow(#Window_0, 0, 0, 435, 135, "Hexa Reverse Text",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Window_0))
      Frame3DGadget(#Frame3D_0, 10, 10, 200, 115, "Hexa en texte", #PB_Frame3D_Double)
      StringGadget(#String_0, 20, 30, 180, 20, "65 73 73 61 69 65 ")
      ButtonGadget(#Button_0, 20, 60, 180, 20, "convertir")
      StringGadget(#String_1, 20, 90, 180, 20, "", #PB_String_ReadOnly)
      Frame3DGadget(#Frame3D_1, 225, 10, 200, 115, "Texte en hexa", #PB_Frame3D_Double)
      StringGadget(#String_2, 235, 30, 180, 20, "essaie")
      ButtonGadget(#Button_1, 235, 60, 180, 20, "convertir")
      StringGadget(#String_3, 235, 90, 180, 20, "", #PB_String_ReadOnly)
      
    EndIf
  EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget 
      Select EventGadget()
      
       Case #Button_0
        Texte$ = GetGadgetText(#String_0)
         Valeur$=""
        For i=1 To Len(texte$)
         Resultat$ = StringField(texte$, i, " ")
          Valeur$=Valeur$+Chr(Val(Resultat$))
        Next i
        SetGadgetText(#String_1, Valeur$)

       Case #Button_1
        Texte$ = GetGadgetText(#String_2)
         Valeur$=""
        For i = 1 To Len(Texte$)
         ValeurASCII = Asc(Mid(Texte$,i,1))
          Valeur$ = Valeur$ + Str(Val(Hex(ValeurASCII)))+" "
        Next
        SetGadgetText(#String_3, Valeur$)
      
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
voila

ps: pour les valeurs, je me sert des tableaux ci-dessous:
ASCII1
ASCII2




@++

Publié : jeu. 21/févr./2008 17:12
par Ar-S
Je n'ai pas l'impression que la version conversion ASCII to DEC fonctionne vu ce que ça affiche.

Pour l'hex => dec, dans la droopy libs tu as une fonction toute faite.

Code : Tout sélectionner

Hex2Dec("FF")

Publié : sam. 23/févr./2008 18:09
par PAPIPP
Pour convertir de l' Hexa en ASCII val("$FF")

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Frame3D_0
  #String_0
  #Button_0
  #String_1
  #Frame3D_1
  #String_2
  #Button_1
  #String_3
EndEnumeration

  If OpenWindow(#Window_0, 0, 0, 435, 135, "Hexa Reverse Text",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
    If CreateGadgetList(WindowID(#Window_0))
      Frame3DGadget(#Frame3D_0, 10, 10, 200, 115, "Hexa en texte", #PB_Frame3D_Double)
      StringGadget(#String_0, 20, 30, 180, 20, "65 73 73 61 69 65 ")
      ButtonGadget(#Button_0, 20, 60, 180, 20, "convertir")
      StringGadget(#String_1, 20, 90, 180, 20, "", #PB_String_ReadOnly)
      Frame3DGadget(#Frame3D_1, 225, 10, 200, 115, "Texte en hexa", #PB_Frame3D_Double)
      StringGadget(#String_2, 235, 30, 180, 20, "essaie")
      ButtonGadget(#Button_1, 235, 60, 180, 20, "convertir")
      StringGadget(#String_3, 235, 90, 180, 20, "", #PB_String_ReadOnly)
     
    EndIf
  EndIf

  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
     
       Case #Button_0
        Texte$ = GetGadgetText(#String_0)
         Valeur$=""
        For i=1 To Len(texte$)
         Resultat$ = "$"+StringField(texte$, i, " "); ici $ devant la chaine Hexa
          Valeur$=Valeur$+Chr(Val(Resultat$))
        Next i
        SetGadgetText(#String_1, Valeur$)

       Case #Button_1
        Texte$ = GetGadgetText(#String_2)
         Valeur$=""
        For i = 1 To Len(Texte$)
         ValeurASCII = Asc(Mid(Texte$,i,1))
          Valeur$ = Valeur$ + Str(Val(Hex(ValeurASCII)))+" "
        Next
        SetGadgetText(#String_3, Valeur$)
     
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow
et ci dessous un prg test pour vérifier

Code : Tout sélectionner

; conversion hexa_ dec
a.l=$aa
B.l=$FF
Debug a*b
Debug $AA
Debug $FF
Debug a
Debug b
Debug "======================="
aa$="$AA"
bb$="$FF"
; Conversion hexa _dec
Debug Val(aa$)
Debug Val(bb$)
Debug Val(aa$)*Val(bb$)
Debug aa$
Debug bb$
; conversion en présentation hexa mais sans '$'xx pouvant faire croire à du décimal
Debug Hex(a)
Debug Hex(b)


Debug "======================= C Q F D =============================="