'=========================================================================== ' Subject: HEX TO DECIMAL CONVERSION Date: 03-19-00 (10:56) ' Author: Wayne Henderson Code: QB, QBasic, PDS ' Origin: whenders@becon.org Packet: BINARY.ABC '=========================================================================== 'Hex to Decimal conversion. By Wayne Henderson March 18, 2000 2:00pm EST DEFINT A-Z: DIM Bin$(15) cL$ = LTRIM$(RTRIM$(COMMAND$)): PRINT IF cL$ = "" THEN PRINT "Enter a HEX number > 0 and <= $7FFFFFFF": SYSTEM FOR c = 0 TO 15: READ Bin$(c): NEXT L = LEN(cL$): test$ = SPACE$(8): e = 0 IF L > 8 THEN e$ = "Overflow": GOTO errer FOR c = 1 TO L a = ASC(MID$(cL$, c, 1)) IF a < 48 OR a > 70 OR (a > 57 AND a < 65) THEN e = e + 1: e$ = "Invalid hex digit" IF e > 1 THEN e$ = e$ + "s" END IF NEXT IF e THEN GOTO errer RSET test$ = cL$ IF test$ > "7FFFFFFF" THEN e$ = "Overflow": GOTO errer cL$ = LTRIM$(cL$) s& = 0: k& = 1 FOR c = L TO 2 STEP -1 a = ASC(MID$(cL$, c, 1)) a = a - 48 + 7 * (a > 57) s& = s& + a * k& k& = k& * 16 NEXT a = ASC(cL$): a = a - 48 + 7 * (a > 57): s& = s& + k& * a IF s& < 1 THEN e$ = "Underflow": GOTO errer comma = 1: IF s& >= 999 THEN comma = comma + 1 IF s& >= 999999 THEN comma = comma + 1 IF s& >= 999999999 THEN comma = comma + 1 u$ = STRING$(comma + INT(LOG(s&) / LOG(10)), "#") + "," PRINT "$"; cL$; " ="; USING u$; s&; : PRINT " = %"; IF LEN(cL$) MOD 2 = 1 THEN PRINT "0000"; FOR c = 1 TO LEN(cL$) a = ASC(MID$(cL$, c, 1)) a = a - 48 + 7 * (a > 57): PRINT Bin$(a); IF (LEN(cL$) - c) MOD 2 = 0 THEN PRINT " "; NEXT PRINT errer: IF e$ <> "" THEN PRINT "ERROR: "; e$ SYSTEM DATA 0000,0001,0010,0011,0100,0101,0110,0111 DATA 1000,1001,1010,1011,1100,1101,1110,1111