home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 35 Internet
/
35-Internet.zip
/
base64.zip
/
DEBASE64.BAS
next >
Wrap
BASIC Source File
|
1993-11-16
|
2KB
|
72 lines
100 DEFINT A-Z
110 CHARSET$="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
120 DIM T(255),SEXTET(4)
130 FOR N=0 TO 255
140 T(N)=-1
150 NEXT N
160 FOR N=0 TO 63
170 I=ASC(MID$(CHARSET$,N+1,1))
180 T(I)=N
190 NEXT N
200 PRINT "INPUT? ";
210 LINE INPUT INPUT.FILE.NAME$
220 OPEN INPUT.FILE.NAME$ FOR INPUT AS 1
230 PRINT "OUTPUT? ";
240 LINE INPUT OUTPUT.FILE.NAME$
250 OPEN OUTPUT.FILE.NAME$ FOR OUTPUT AS 2
260 PRINT #2," ";
270 CLOSE 2
280 KILL OUTPUT.FILE.NAME$
290 OPEN "R",2,OUTPUT.FILE.NAME$,1
300 FIELD #2,1 AS BYTE$
310 INPUT.LINE$=""
320 INPUT.LINE.INDEX=81
330 INPUT.EOF=0
340 INPUT.EOF.PENDING=0
350 WHILE (INPUT.EOF = 0)
360 SEXTET.NUM=1
370 NUM.BITS=0
380 WHILE(SEXTET.NUM <= 4)
390 WHILE((INPUT.EOF = 0) AND (INPUT.LINE.INDEX > LEN(INPUT.LINE$)))
400 IF INPUT.EOF.PENDING = 0 THEN 430
410 INPUT.EOF=-1
420 GOTO 460
430 LINE INPUT #1,INPUT.LINE$
440 INPUT.LINE.INDEX=1
450 IF EOF(1) THEN INPUT.EOF.PENDING=-1
460 WEND
470 IF INPUT.EOF = 0 THEN 510
480 SEXTET(SEXTET.NUM)=0
490 SEXTET.NUM=SEXTET.NUM+1
500 GOTO 580
510 I=ASC(MID$(INPUT.LINE$,INPUT.LINE.INDEX,1))
520 INPUT.LINE.INDEX=INPUT.LINE.INDEX+1
530 T1=T(I)
540 IF T1 < 0 THEN 580
550 SEXTET(SEXTET.NUM)=T1
560 NUM.BITS=NUM.BITS+6
570 SEXTET.NUM=SEXTET.NUM+1
580 WEND
590 IF NUM.BITS < 8 THEN 660
600 T1=SEXTET(1)
610 T2=SEXTET(2)
620 TEM$=CHR$(4*T1+(T2\16))
630 LSET BYTE$=TEM$
640 PUT #2
650 NUM.BITS=NUM.BITS-8
660 IF NUM.BITS < 8 THEN 720
670 T1=SEXTET(3)
680 TEM$=CHR$(16*(T2 MOD 16)+(T1\4))
690 LSET BYTE$=TEM$
700 PUT #2
710 NUM.BITS=NUM.BITS-8
720 IF NUM.BITS < 8 THEN 770
730 T2=SEXTET(4)
740 TEM$=CHR$(64*(T1 MOD 4)+T2)
750 LSET BYTE$=TEM$
760 PUT #2
770 WEND
780 CLOSE 2
790 CLOSE 1
800 END