'=========================================================================== ' Subject: CONVERT NUMBER FROM ANY BASE Date: 05-11-00 (00:37) ' Author: Dieter Folger Code: QB, QBasic, PDS, PB ' Origin: folger@bnv-bamberg.de Packet: BINARY.ABC '=========================================================================== '------------------------------------- 'NSYS.BAS for QBasic or Powerbasic 'Convert number from any base (2..16) 'to all other bases (2..16) '------------------------------------- CLS Again: INPUT "Number to convert: ", Num$ 120: INPUT "Base of number (2..16): ", Basis IF Basis < 2 OR Basis > 16 THEN PRINT "Illegal base";Basis GOTO Again END IF 'Convert any input number to decimal Factor = 1 FOR I = LEN(Num$) TO 1 STEP -1 n = ASC(UCASE$(MID$(Num$, I, 1))) IF n > 64 THEN n = n - 55 'A..F IF n > 47 THEN n = n - 48 '0..9 IF n > 15 THEN Print "Illegal number:";Num$ GOTO Again END IF IF n >= Basis THEN PRINT "Base";Basis;"doesn't match ";Num$ GOTO Again END IF nn = nn + (n * Factor) Factor = Factor * Basis NEXT I ' **** Convert to all bases n = nn: ' Save decimal FOR I = 2 TO 16 nn = n: Nstr$ = "" Convert: IF nn MOD i < 10 THEN ADD = 48 ELSE ADD = 55 'Convert to string 0 - F Nstr$ = CHR$(nn MOD i + ADD) + Nstr$ nn = nn \ i IF nn > 0 THEN GOTO Convert 'Format output IF i = 2 THEN L = LEN(Nstr$): 'Maximum string length Nstr$ = STRING$(L - LEN(Nstr$), ".") + Nstr$ PRINT "Base "; : PRINT USING "##"; i; : PRINT ": "; Nstr$ NEXT I END