๐Ÿ“ฆ diegorodriguezv / pythonchallenge

๐Ÿ“„ level_19.py ยท 27 lines
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27# LEVEL 19
# http://www.pythonchallenge.com/pc/hex/bin.html

import base64


with open('data/level_19.txt', 'rb') as f:
    content = f.read()
    decoded = base64.decodebytes(content)
    with open('data/indian_little.wav', 'wb') as wav_l:
        with open('data/indian_big.wav', 'wb') as wav_b:
            data_start = 45
            # write header as is
            wav_l.write(decoded[:45])
            wav_b.write(decoded[:45])
            # change endianness for the rest of 16 bit words
            while True:
                if data_start + 2 <= len(decoded):
                    word_b = decoded[data_start:data_start + 2]
                    word_i_b = int.from_bytes(word_b, 'big')
                    word_l = word_i_b.to_bytes(2, 'little')
                    wav_l.write(word_l)
                    wav_b.write(word_b)
                else:
                    break
                data_start += 2