convencode.py
· 1.7 KiB · Python
Raw
#!/usr/bin/env python
import os, math
import collections
G1 = 0x79 # 171 octal
G2 = 0x5B # 131 octal
K = 7
UW = 0x1ACFFC1D
buff = collections.deque(maxlen=K)
def binary(num, length=8):
return format(num, '#0{}b'.format(length + 2))
# Fill the buffer with initial values
for i in range(0, K):
buff.append(0)
bitUW = []
binaryUW = binary(UW, 32)[2:]
for i in binaryUW:
bitUW.append(int(i))
bitG1 = []
bitG2 = []
binaryG1 = binary(G1, K)[2:]
binaryG2 = binary(G2, K)[2:]
for i in range(0, K):
bitG1.append(int(binaryG1[i]))
bitG2.append(int(binaryG2[i]))
convolved = []
def buffIsZero():
for i in range(0, K):
if buff[i] == 1:
return False
return True
for i in bitUW:
buff.appendleft(i)
b0 = 0
b1 = 0
for t in range(0, K):
b0 += bitG1[t] & buff[t]
b1 += bitG2[t] & buff[t]
b0 = b0 % 2
b1 = b1 % 2
b1 = 1 if b1 == 0 else 0
convolved.append(b0)
convolved.append(b1)
while True:
buff.appendleft(0)
if buffIsZero():
break
b0 = 0
b1 = 0
for t in range(0, K):
b0 += bitG1[t] & buff[t]
b1 += bitG2[t] & buff[t]
b0 = b0 % 2
b1 = b1 % 2
b1 = 1 if b1 == 0 else 0
convolved.append(b0)
convolved.append(b1)
#convolved = convolved[:len(convolved)-2]
print convolved
f = open("UW.bit", "w")
t = open("UW_normal.bit", "w")
for s in range(0, 64):
for i in bitUW:
if i == 1:
t.write(chr(0xFF))
t.write(chr(0xFF))
t.write(chr(0xFF))
else:
t.write(chr(0x00))
t.write(chr(0x00))
t.write(chr(0x00))
for i in convolved:
if i == 1:
f.write(chr(0xFF))
f.write(chr(0xFF))
f.write(chr(0xFF))
else:
f.write(chr(0x00))
f.write(chr(0x00))
f.write(chr(0x00))
f.close()
t.close()
| 1 | #!/usr/bin/env python |
| 2 | |
| 3 | import os, math |
| 4 | import collections |
| 5 | |
| 6 | G1 = 0x79 # 171 octal |
| 7 | G2 = 0x5B # 131 octal |
| 8 | |
| 9 | K = 7 |
| 10 | UW = 0x1ACFFC1D |
| 11 | |
| 12 | buff = collections.deque(maxlen=K) |
| 13 | |
| 14 | def binary(num, length=8): |
| 15 | return format(num, '#0{}b'.format(length + 2)) |
| 16 | |
| 17 | # Fill the buffer with initial values |
| 18 | for i in range(0, K): |
| 19 | buff.append(0) |
| 20 | |
| 21 | |
| 22 | bitUW = [] |
| 23 | binaryUW = binary(UW, 32)[2:] |
| 24 | for i in binaryUW: |
| 25 | bitUW.append(int(i)) |
| 26 | |
| 27 | bitG1 = [] |
| 28 | bitG2 = [] |
| 29 | binaryG1 = binary(G1, K)[2:] |
| 30 | binaryG2 = binary(G2, K)[2:] |
| 31 | for i in range(0, K): |
| 32 | bitG1.append(int(binaryG1[i])) |
| 33 | bitG2.append(int(binaryG2[i])) |
| 34 | |
| 35 | convolved = [] |
| 36 | |
| 37 | def buffIsZero(): |
| 38 | for i in range(0, K): |
| 39 | if buff[i] == 1: |
| 40 | return False |
| 41 | return True |
| 42 | |
| 43 | for i in bitUW: |
| 44 | buff.appendleft(i) |
| 45 | b0 = 0 |
| 46 | b1 = 0 |
| 47 | for t in range(0, K): |
| 48 | b0 += bitG1[t] & buff[t] |
| 49 | b1 += bitG2[t] & buff[t] |
| 50 | b0 = b0 % 2 |
| 51 | b1 = b1 % 2 |
| 52 | b1 = 1 if b1 == 0 else 0 |
| 53 | convolved.append(b0) |
| 54 | convolved.append(b1) |
| 55 | |
| 56 | while True: |
| 57 | buff.appendleft(0) |
| 58 | if buffIsZero(): |
| 59 | break |
| 60 | b0 = 0 |
| 61 | b1 = 0 |
| 62 | for t in range(0, K): |
| 63 | b0 += bitG1[t] & buff[t] |
| 64 | b1 += bitG2[t] & buff[t] |
| 65 | b0 = b0 % 2 |
| 66 | b1 = b1 % 2 |
| 67 | b1 = 1 if b1 == 0 else 0 |
| 68 | convolved.append(b0) |
| 69 | convolved.append(b1) |
| 70 | |
| 71 | #convolved = convolved[:len(convolved)-2] |
| 72 | |
| 73 | print convolved |
| 74 | |
| 75 | f = open("UW.bit", "w") |
| 76 | t = open("UW_normal.bit", "w") |
| 77 | for s in range(0, 64): |
| 78 | for i in bitUW: |
| 79 | if i == 1: |
| 80 | t.write(chr(0xFF)) |
| 81 | t.write(chr(0xFF)) |
| 82 | t.write(chr(0xFF)) |
| 83 | else: |
| 84 | t.write(chr(0x00)) |
| 85 | t.write(chr(0x00)) |
| 86 | t.write(chr(0x00)) |
| 87 | for i in convolved: |
| 88 | if i == 1: |
| 89 | f.write(chr(0xFF)) |
| 90 | f.write(chr(0xFF)) |
| 91 | f.write(chr(0xFF)) |
| 92 | else: |
| 93 | f.write(chr(0x00)) |
| 94 | f.write(chr(0x00)) |
| 95 | f.write(chr(0x00)) |
| 96 | |
| 97 | f.close() |
| 98 | t.close() |