aboutsummaryrefslogtreecommitdiffstats
path: root/icecompr/icecompr.py
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2017-01-15 10:05:03 +0100
committerClifford Wolf <clifford@clifford.at>2017-01-15 10:05:13 +0100
commit31cc8a1ab94137079c5e0adc722a45900b093762 (patch)
tree7f6eaddfefff76a43166015ae3b9f40038e8cda1 /icecompr/icecompr.py
parentb1c4784c8ebee596a708f4ecc769aeb87431ebfe (diff)
downloadicestorm-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.py38
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)