From 31cc8a1ab94137079c5e0adc722a45900b093762 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 15 Jan 2017 10:05:03 +0100 Subject: Cleanup icecompr code --- icecompr/icecompr.py | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) mode change 100644 => 100755 icecompr/icecompr.py (limited to 'icecompr/icecompr.py') diff --git a/icecompr/icecompr.py b/icecompr/icecompr.py old mode 100644 new mode 100755 index 886c1a9..2e2bdaf --- a/icecompr/icecompr.py +++ b/icecompr/icecompr.py @@ -7,14 +7,13 @@ # binary, for any purpose, commercial or non-commercial, and by any # means. - def make_int_bits(value, nbits): bits = list() for i in range(nbits-1, -1, -1): bits.append((value & (1 << i)) != 0) return bits -def ice_compress(inbits): +def ice_compress_bits(inbits): outbits = list() outbits += make_int_bits(0x49434543, 32) outbits += make_int_bits(0x4f4d5052, 32) @@ -107,23 +106,30 @@ def ice_compress(inbits): return outbits +def ice_compress_bytes(inbytes): + inbits = list() + for byte in inbytes: + for i in range(7, -1, -1): + inbits.append((byte & (1 << i)) != 0) -# ------------------------------------------------------ -# Usage example: -# python3 icecompr.py < example_8k.bin > example_8k.compr + outbits = ice_compress_bits(inbits) -import sys + outbytes = list() + for i in range(0, len(outbits), 8): + byte = 0 + for k in range(i, min(i+8, len(outbits))): + if outbits[k]: byte |= 1 << (7-(k-i)) + outbytes.append(byte) -inbits = list() -for byte in sys.stdin.buffer.read(): - for i in range(7, -1, -1): - inbits.append((byte & (1 << i)) != 0) + return bytes(outbytes) -outbits = ice_compress(inbits) +# ------------------------------------------------------ +# Usage example: +# python3 icecompr.py < example_8k.bin > example_8k.compr -for i in range(0, len(outbits), 8): - byte = 0 - for k in range(i, min(i+8, len(outbits))): - if outbits[k]: byte |= 1 << (7-(k-i)) - sys.stdout.buffer.write(bytes([byte])) +if __name__ == '__main__': + import sys + inbytes = sys.stdin.buffer.read() + outbytes = ice_compress_bytes(inbytes) + sys.stdout.buffer.write(outbytes) -- cgit v1.2.3