5748218 [rkeene@sledge /home/rkeene/devel/archive/quickbasic]$ cat -n base64.bas
   1: DECLARE SUB Help ()
   2: DECLARE FUNCTION ExistFile! (f$)
   3: DECLARE FUNCTION Str2DBL! (t$)
   4: DECLARE SUB Convert (D#, Nb#)
   5: DEFDBL A-Z
   6: s$ = COMMAND$
   7: IF s$ = "" OR ExistFile(s$) <> -1 THEN Help: END
   8: OPEN s$ FOR BINARY AS #1
   9: OPEN "OUT.T64" FOR OUTPUT AS #2
  10: DIM TwoBytes AS STRING * 2
  11: n1 = 2
  12: n2 = 3
  13: PRINT "Creating OUT.T64 from " + UCASE$(s$) + ".  Est. Size of OUT.T64:"; (LOF(1) * (n2 / n1) + LEN(s$)) + INT(LOF(1) / 78) * 2
  14: PRINT "OUT.T64: BEGIN"
  15: PRINT #2, s$
  16: PRINT s$
  17: 'FOR q = 1 TO LOF(1) STEP n1
  18: DO UNTIL q = LOF(1) + 1
  19:    q = LOC(1) + 1
  20:    GET #1, q, TwoBytes
  21:    Decimal = Str2DBL(TwoBytes)
  22:    n$ = ""
  23:    DO WHILE Decimal > 0
  24:       CALL Convert(Decimal, 64)
  25:       Decimal = Decimal \ 64
  26:    LOOP
  27:    n$ = STRING$((n2) - LEN(n$), "0") + n$
  28:    ttl = ttl + LEN(n$)
  29:    IF LEN(Stord$) >= 77 THEN PRINT Stord$: PRINT #2, Stord$: Stord$ = "" ELSE Stord$ = Stord$ + n$
  30: LOOP
  31: 'NEXT q
  32: PRINT #2, Stord$
  33: PRINT Stord$
  34: CLOSE 1, 2
  35: PRINT "OUT.T64: EOF"
  36: PRINT "Size of OUT.T64:";
  37: OPEN "OUT.T64" FOR RANDOM AS #2
  38: PRINT LOF(2)
  39: CLOSE 1, 2, 3, 4, 5, 6, 7, 8, 9
  40: 
  41: SUB Convert (D, Nb) STATIC
  42: SHARED n$
  43:    ' Take the remainder to find the value of the current
  44:    ' digit.
  45:    R = D MOD Nb
  46:    ' If the digit is less than ten, return a digit (0...9).
  47:    ' Otherwise, return a letter (A...Z).
  48:    IF R < 10 THEN Digit$ = CHR$(R + 48) ELSE Digit$ = CHR$(R + 55)
  49:    n$ = RIGHT$(Digit$, 1) + n$
  50: END SUB
  51: 
  52: DEFSNG A-Z
  53: FUNCTION ExistFile (f$)
  54: IF f$ = "" THEN ExistFile = 1: EXIT FUNCTION
  55: X = FREEFILE
  56: OPEN f$ FOR RANDOM AS #X
  57: IF LOF(X) = 0 THEN CLOSE X: KILL f$: ExistFile = 1 ELSE CLOSE X: ExistFile = -1
  58: END FUNCTION
  59: 
  60: SUB Help
  61: PRINT "Base64 - By DDE SoftWare, Inc."
  62: PRINT "Syntax: BASE64 {binary file}"
  63: PRINT ""
  64: PRINT "binary file - A binary file to be converted to ASCII"
  65: END SUB
  66: 
  67: FUNCTION Str2DBL (t$)
  68: FOR q = 1 TO LEN(t$)
  69: ff$ = RTRIM$(LTRIM$(STR$(ASC(MID$(t$, q, 1)))))
  70: m$ = m$ + STRING$(3 - LEN(ff$), "0") + ff$
  71: NEXT q
  72: Str2DBL = VAL(m$)
  73: END FUNCTION
  74: 
5748219 [rkeene@sledge /home/rkeene/devel/archive/quickbasic]$

Click here to go back to the directory listing.
Click here to download this file.
last modified: 2000-05-09 20:59:58