DECLARE FUNCTION IntToBin$ (t!) DECLARE FUNCTION Compress$ (q$) DECLARE FUNCTION Decompress$ (q$) DECLARE FUNCTION Compress1$ (t$) test$ = test$ + "/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\" outt$ = Compress$(test$) PRINT "--------------------" PRINT "in : "; LEN(test$) PRINT "out: "; LEN(outt$) PRINT outt$ FUNCTION Compress$ (q$) tmp$ = q$ 'FOR r = 1 TO LEN(q$) 'tmp$ = tmp$ + IntToBin$(ASC(MID$(q$, r, 1))) 'NEXT r 'MrkEr = VAL(MID$(tmp$, 1, 1)): Cntr = 1 FOR r = 1 TO LEN(tmp$) IF ASC(MID$(tmp$, r, 1)) = MrkEr THEN Cntr = Cntr + 1 IF ASC(MID$(tmp$, r, 1)) <> MrkEr THEN output$ = output$ + CHR$(Cntr) + CHR$(MrkEr): Cntr = 1: MrkEr = ASC(MID$(tmp$, r, 1)) NEXT r 'IF ASC(MID$(tmp$, r, 1)) <> MrkEr THEN output$ = output$ + CHR$(Cntr) + CHR$(MrkEr): Cntr = 1: MrkEr = ASC(MID$(tmp$, r, 1)) Compress$ = output$ END FUNCTION FUNCTION Compress1$ (t$) d = VAL("&H" + HEX$(MID$(t$, q + 0, 1)) + HEX$(MID$(t$, q + 1, 1)) + HEX$(MID$(t$, q + 2, 1))) END FUNCTION FUNCTION Decompress$ (q$) tmp$ = "" FOR r = 1 TO LEN(q$) IF ASC(MID$(q$, r, 1)) < 128 THEN t$ = t$ + STRING$(ASC(MID$(q$, r, 1)), "1") IF ASC(MID$(q$, r, 1)) > 127 THEN t$ = t$ + STRING$(ASC(MID$(q$, r, 1)) - 127, "0") NEXT r Decompress$ = t$ END FUNCTION FUNCTION IntToBin$ (t) m$ = HEX$(t) 'PRINT m$ FOR m = 0 TO LEN(m$) - 1 STEP 2 FOR q = 1 TO 2 IF MID$(m$, q + m, 1) = "0" THEN nbl1$ = nbl1$ + "0000" IF MID$(m$, q + m, 1) = "1" THEN nbl1$ = nbl1$ + "0001" IF MID$(m$, q + m, 1) = "2" THEN nbl1$ = nbl1$ + "0010" IF MID$(m$, q + m, 1) = "3" THEN nbl1$ = nbl1$ + "0011" IF MID$(m$, q + m, 1) = "4" THEN nbl1$ = nbl1$ + "0100" IF MID$(m$, q + m, 1) = "5" THEN nbl1$ = nbl1$ + "0101" IF MID$(m$, q + m, 1) = "6" THEN nbl1$ = nbl1$ + "0110" IF MID$(m$, q + m, 1) = "7" THEN nbl1$ = nbl1$ + "0111" IF MID$(m$, q + m, 1) = "8" THEN nbl1$ = nbl1$ + "1000" IF MID$(m$, q + m, 1) = "9" THEN nbl1$ = nbl1$ + "1001" IF MID$(m$, q + m, 1) = "A" THEN nbl1$ = nbl1$ + "1010" IF MID$(m$, q + m, 1) = "B" THEN nbl1$ = nbl1$ + "1100" IF MID$(m$, q + m, 1) = "C" THEN nbl1$ = nbl1$ + "1011" IF MID$(m$, q + m, 1) = "D" THEN nbl1$ = nbl1$ + "1101" IF MID$(m$, q + m, 1) = "E" THEN nbl1$ = nbl1$ + "1110" IF MID$(m$, q + m, 1) = "F" THEN nbl1$ = nbl1$ + "1111" NEXT q, m IntToBin$ = STRING$(8 - LEN(nbl1$), "0") + nbl1$ END FUNCTION