Der Trick bei der Konvertierung ist, mit diesen lästigen Buchstaben umzugehen. Ich habe den einfachsten Weg gefunden, dies zu tun, ist mit einer "Map" -Struktur, wo Sie die Hexadezimalziffern mit Dezimalzahlen gleichsetzen. Small Basic macht dies besonders einfach, da Arrays in Small Basic tatsächlich als Maps implementiert sind.
Ich arbeitete ein vollständiges Beispiel basierend auf Ihrem Schnipsel oben. Sie können es mit diesem Small Basic-Importcode erhalten: CJK283
Das folgende Unterprogramm ist das wichtige Bit. Es konvertiert eine zweistellige Hexadezimalzahl in sein dezimales Äquivalent. Es unterstreicht auch, wie begrenzt Unterprogramme in Small Basic sind. Statt einer einzelnen Zeile für jeden Aufruf wie in anderen Sprachen, wo ein Parameter übergeben und ein Wert zurückgegeben wird, erfordert dies in Small Basic das Jonglieren von Variablen innerhalb der Subroutine und mindestens drei Zeilen zum Aufrufen der Subroutine.
'Call to the ConvertToHex Subroutine
hex = Text.GetSubText(color,2,2)
DecimalFromHex()
red = decimal
Convert a Hex string to Decimal
Sub DecimalFromHex
'Set an array as a quick and dirty way of converting a hex value into a decimal value
hexValues = "0=0;1=1;2=2;3=3;4=4;5=5;6=6;7=7;8=8;9=9;A=10;B=11;C=12;D=13;E=14;F=15"
hiNibble = Text.GetSubText(hex,1,1) 'The high order nibble of this byte
loNibble = Text.GetSubText(hex,2,1) 'The low order nibble of this byte
hiVal = hexValues[hiNibble] * 16 'Combine the nibbles into a decimal value
loVal = hexValues[loNibble]
decimal = hiVal + loVal
EndSub