|
|
@@ -2,14 +2,9 @@ |
|
|
|
( '0': ASCII 0x30 'x': 0x78 0x7830: 30768 ) |
|
|
|
DUP @ 30768 = NOT IF 0 EXIT THEN ( a 0 ) |
|
|
|
( We have "0x" prefix ) |
|
|
|
2+ |
|
|
|
0 ( a r ) |
|
|
|
BEGIN |
|
|
|
SWAP C@+ ( r a+1 c ) |
|
|
|
?DUP NOT IF DROP 1 EXIT THEN ( r, 1 ) |
|
|
|
_ ( r a n ) |
|
|
|
DUP 0< IF ROT 2DROP 0 EXIT THEN ( a 0 ) |
|
|
|
ROT 16 * + ( a r*16+n ) |
|
|
|
AGAIN |
|
|
|
; |
|
|
|
|
|
|
|
DUP 1- C@ ( a len ) |
|
|
|
0 SWAP ( len ) 2 DO ( a r ) |
|
|
|
OVER I + C@ ( a r c ) _ ( a r n ) |
|
|
|
DUP 0< IF 2DROP 0 UNLOOP EXIT THEN |
|
|
|
SWAP 4 LSHIFT + ( a r*16+n ) LOOP |
|
|
|
NIP 1 ; |