1: DECLARE FUNCTION IntToBin$ (t!) 2: DECLARE FUNCTION Compress$ (q$) 3: DECLARE FUNCTION Decompress$ (q$) 4: DECLARE FUNCTION Compress1$ (t$) 5: test$ = test$ + "/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\" 6: outt$ = Compress$(test$) 7: PRINT "--------------------" 8: PRINT "in : "; LEN(test$) 9: PRINT "out: "; LEN(outt$) 10: PRINT outt$ 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: FUNCTION Compress$ (q$) 26: tmp$ = q$ 27: 'FOR r = 1 TO LEN(q$) 28: 'tmp$ = tmp$ + IntToBin$(ASC(MID$(q$, r, 1))) 29: 'NEXT r 30: 'MrkEr = VAL(MID$(tmp$, 1, 1)): Cntr = 1 31: FOR r = 1 TO LEN(tmp$) 32: IF ASC(MID$(tmp$, r, 1)) = MrkEr THEN Cntr = Cntr + 1 33: IF ASC(MID$(tmp$, r, 1)) <> MrkEr THEN output$ = output$ + CHR$(Cntr) + CHR$(MrkEr): Cntr = 1: MrkEr = ASC(MID$(tmp$, r, 1)) 34: NEXT r 35: 'IF ASC(MID$(tmp$, r, 1)) <> MrkEr THEN output$ = output$ + CHR$(Cntr) + CHR$(MrkEr): Cntr = 1: MrkEr = ASC(MID$(tmp$, r, 1)) 36: Compress$ = output$ 37: END FUNCTION 38: 39: FUNCTION Compress1$ (t$) 40: d = VAL("&H" + HEX$(MID$(t$, q + 0, 1)) + HEX$(MID$(t$, q + 1, 1)) + HEX$(MID$(t$, q + 2, 1))) 41: 42: END FUNCTION 43: 44: FUNCTION Decompress$ (q$) 45: tmp$ = "" 46: FOR r = 1 TO LEN(q$) 47: IF ASC(MID$(q$, r, 1)) < 128 THEN t$ = t$ + STRING$(ASC(MID$(q$, r, 1)), "1") 48: IF ASC(MID$(q$, r, 1)) > 127 THEN t$ = t$ + STRING$(ASC(MID$(q$, r, 1)) - 127, "0") 49: NEXT r 50: Decompress$ = t$ 51: END FUNCTION 52: 53: FUNCTION IntToBin$ (t) 54: m$ = HEX$(t) 55: 'PRINT m$ 56: FOR m = 0 TO LEN(m$) - 1 STEP 2 57: FOR q = 1 TO 2 58: IF MID$(m$, q + m, 1) = "0" THEN nbl1$ = nbl1$ + "0000" 59: IF MID$(m$, q + m, 1) = "1" THEN nbl1$ = nbl1$ + "0001" 60: IF MID$(m$, q + m, 1) = "2" THEN nbl1$ = nbl1$ + "0010" 61: IF MID$(m$, q + m, 1) = "3" THEN nbl1$ = nbl1$ + "0011" 62: IF MID$(m$, q + m, 1) = "4" THEN nbl1$ = nbl1$ + "0100" 63: IF MID$(m$, q + m, 1) = "5" THEN nbl1$ = nbl1$ + "0101" 64: IF MID$(m$, q + m, 1) = "6" THEN nbl1$ = nbl1$ + "0110" 65: IF MID$(m$, q + m, 1) = "7" THEN nbl1$ = nbl1$ + "0111" 66: IF MID$(m$, q + m, 1) = "8" THEN nbl1$ = nbl1$ + "1000" 67: IF MID$(m$, q + m, 1) = "9" THEN nbl1$ = nbl1$ + "1001" 68: IF MID$(m$, q + m, 1) = "A" THEN nbl1$ = nbl1$ + "1010" 69: IF MID$(m$, q + m, 1) = "B" THEN nbl1$ = nbl1$ + "1100" 70: IF MID$(m$, q + m, 1) = "C" THEN nbl1$ = nbl1$ + "1011" 71: IF MID$(m$, q + m, 1) = "D" THEN nbl1$ = nbl1$ + "1101" 72: IF MID$(m$, q + m, 1) = "E" THEN nbl1$ = nbl1$ + "1110" 73: IF MID$(m$, q + m, 1) = "F" THEN nbl1$ = nbl1$ + "1111" 74: NEXT q, m 75: IntToBin$ = STRING$(8 - LEN(nbl1$), "0") + nbl1$ 76: END FUNCTION 77: |