diff options
author | Clifford Wolf <clifford@clifford.at> | 2017-01-15 10:05:03 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2017-01-15 10:05:13 +0100 |
commit | 31cc8a1ab94137079c5e0adc722a45900b093762 (patch) | |
tree | 7f6eaddfefff76a43166015ae3b9f40038e8cda1 /icecompr/icecompr.py | |
parent | b1c4784c8ebee596a708f4ecc769aeb87431ebfe (diff) | |
download | icestorm-31cc8a1ab94137079c5e0adc722a45900b093762.tar.gz icestorm-31cc8a1ab94137079c5e0adc722a45900b093762.tar.bz2 icestorm-31cc8a1ab94137079c5e0adc722a45900b093762.zip |
Cleanup icecompr code
Diffstat (limited to 'icecompr/icecompr.py')
-rwxr-xr-x[-rw-r--r--] | icecompr/icecompr.py | 38 |
1 files changed, 22 insertions, 16 deletions
diff --git a/icecompr/icecompr.py b/icecompr/icecompr.py index 886c1a9..2e2bdaf 100644..100755 --- 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) |