ASCII-HEX String in Val umwandeln

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Lebostein
Beiträge: 674
Registriert: 13.09.2004 11:31
Wohnort: Erzgebirge

Beitrag von Lebostein »

Hi, hab den Thread nicht vollständig gelesen, aber vielleicht hilft dir das hier weiter. Der Code wandelt beliebige Zeichenketten um:

Code: Alles auswählen

Procedure ASCIIHexToVal(Input$)

  *ASCII.Byte = @Input$

  While *ASCII\B
    If *ASCII\B >= 048 And *ASCII\B <= 057: Value << 4 + *ASCII\B - 048: EndIf
    If *ASCII\B >= 065 And *ASCII\B <= 070: Value << 4 + *ASCII\B - 055: EndIf
    If *ASCII\B >= 097 And *ASCII\B <= 102: Value << 4 + *ASCII\B - 087: EndIf
    *ASCII + 1
  Wend

  ProcedureReturn Value

EndProcedure

Debug ASCIIHexToVal("A")
Debug ASCIIHexToVal("a")
Debug ASCIIHexToVal("FF")
Debug ASCIIHexToVal("ff")
Debug ASCIIHexToVal("FF00FF")
Debug ASCIIHexToVal("Ff00Ff")
Debug ASCIIHexToVal("66AA")
Für deine Sache müsstest du es dann so schreiben:

Code: Alles auswählen

Procedure ASCIIHexToVal(Input$)

  *ASCII.Byte = @Input$

  For count = 1 To 2
    If *ASCII\B >= 048 And *ASCII\B <= 057: Value << 4 + *ASCII\B - 048: EndIf
    If *ASCII\B >= 065 And *ASCII\B <= 070: Value << 4 + *ASCII\B - 055: EndIf
    If *ASCII\B >= 097 And *ASCII\B <= 102: Value << 4 + *ASCII\B - 087: EndIf
    *ASCII + 1
  Next count

  ProcedureReturn Value

EndProcedure

Debug ASCIIHexToVal("A")
Debug ASCIIHexToVal("a")
Debug ASCIIHexToVal("FF")
Debug ASCIIHexToVal("ff")
Debug ASCIIHexToVal("FF00FF")
Debug ASCIIHexToVal("Ff00Ff")
Debug ASCIIHexToVal("66AA")
Antworten