Sorry, nie ma.
Nie ma odwracania, program po prostu przetwarza łańcuch od końca.
Wiem, że wygląda teraz niesymetrycznie, ale tak naprawdę chyba nie jest do niczego potrzebne?
Rozumiem, że przydawało się do testów, ale jak już działa...
Ewentualnie można wydrukować łańcuch od tyłu
Przy okazji jak się przyglądałem, to wpadłem, że IF w linii 2050 nie jest do końca niezbędny. Odejmowanie od s sobie poradzi, tylko trzeba jakoś wybrać "0" czy "1". I wymyśliłem! Bezpośrednie indeksowanie łańcucha, które zawsze mnie rozbawia (w linii 2060)
.
100 REM liczba HEX w x$, tylko duże litery
110 LET n$=""
120 LET s=CODE x$(1): GO SUB 2000
130 LET s=CODE x$(2): GO SUB 2000
140 STOP: REM wynik w n$
2000 IF s>CODE "9" THEN LET s=s-(CODE "A"-CODE "9"-1)
2010 LET s=s-CODE "0"
2020 FOR a=3 TO 0 STEP -1
2040 LET b=INT (s/2^a)
2050 LET s=s-b*2^a
2060 LET n$=n$+"01"(b+1)
2070 NEXT a
2080 RETURN
Jest krótsze.
Jak już miałem to w pamięci, to w ten sam sposób poprawiłem też BIN -> HEX:
10 LET h$=""
20 LET start=5: GO SUB 1000
30 LET start=1: GO SUB 1000
40 STOP: REM wynik w h$
1000 LET h=0
1010 FOR a=0 TO 3
1020 LET h=h+2^(3-a)*VAL b$(3-a+start)
1030 NEXT a
1050 LET h$=h$+"0123456789ABCDEF"(h+1)
1060 RETURN
I teraz jest szybsze!
I lepiej wygląda
I od razu widać co robi.
EDIT: poprawki w linii 1050. Zmiana załącznika