2017-05-26 2 views

Antwort

0

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 
Verwandte Themen