Writing hex data into a file
Question: I'm trying to write hex data taken from ascii file to a newly created binary
file

ascii file example:

    
    
    98 af b7 93 bb 03 bf 8e ae 16 bf 2e 52 43 8b df
    4f 4e 5a e4 26 3f ca f7 b1 ab 93 4f 20 bf 0a bf
    82 2c dd c5 38 70 17 a0 00 fd 3b fe 3d 53 fc 3b
    28 c1 ff 9e a9 28 29 c1 94 d4 54 d4 d4 ff 7b 40
    

my code

    
    
    hexList = []
    with open('hexFile.txt', 'r') as hexData:
        line=hexData.readline()
        while line != '':
            line = line.rstrip()
            lineHex = line.split(' ')
            for i in lineHex:
                hexList.append(int(i, 16))
            line = hexData.readline()
    
    
    with open('test', 'wb') as f:
        for i in hexList:
            f.write(hex(i))
    

Thought `hexList` holds already hex converted data and `f.write(hex(i))`
should write these hex data into a file, but python writes it with ascii mode

final output: `0x9f0x2c0x380x590xcd0x110x7c0x590xc90x30xea0x37` which is
wrong!

where is the issue?


Answer: Use
[`binascii.unhexlify`](https://docs.python.org/3/library/binascii.html#binascii.unhexlify):

    
    
    >>> import binascii
    >>> binascii.unhexlify('9f')
    '\x9f'
    
    >>> hex(int('9f', 16))
    '0x9f'
    

* * *
    
    
    import binascii
    
    with open('hexFile.txt') as f, open('test', 'wb') as fout:
        for line in f:
            fout.write(
                binascii.unhexlify(''.join(line.split()))
            )
    

