Was ist denn daran so schwer zu verstehn?
Dezimalzahl*sys << schiebt einfach die Vorangegangenen Werte eine Stelle weite nach oben
pos(UpperCase(dual[i]),zeichen) - 1 << rechnet das Zeichen in eine Zahl um
'0' = 0
'1' = 1
...
'9' = 9
'A' = 10
'B' = 11
...
'F' = 15
Der Rest ist einfachste Mathematik - wie man Binär-, Oktal-, Hexadezimalwerte berechnet solltest du ja wissen
PS: Gute Antworten können auch mal 1-2... Tage dauern.