HiveBrain v1.2.0
Get Started
← Back to all entries
patternpythonMinor

Writing integer to binary file

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
binarywritingintegerfile

Problem

I wrote a python function that writes a integer to a file in binary form. But are there any ways that I can reduce the number of steps, is there a more efficient way to write a integer to a file?

def IntWrite(FileName, Integer):
    #convert to hexadecimal
    data = str('{0:0x}'.format(Integer))
    #pad number if odd length
    if(len(data) % 2 != 0):
        data="0"+data
    #split into chucks of two
    info = [data[i:i+2] for i in range(0, len(data), 2)]
    #convert each chuck to a byte
    data2 = "".join([chr(int(a, 16)) for a in info])
    #write to file
    file(FileName, "wb").write(data2)

#convert back to integer
def IntRead(FileName):
    RawData = file(FileName, "rb").read()
    HexData = "".join(['{0:0x}'.format(ord(b)) for b in RawData])
    return int(HexData, 16)

IntWrite("int_data.txt", 100000)
print IntRead("int_data.txt")

Solution

Python comes with a built-in pickle module for serialization:

>>> import pickle
>>> with open('data', 'wb') as f: pickle.dump(9 ** 33, f)
>>> with open('data', 'rb') as f: print(pickle.load(f))
30903154382632612361920641803529


(P.S. I wouldn't use a filename ending with .txt to store binary data.)

Code Snippets

>>> import pickle
>>> with open('data', 'wb') as f: pickle.dump(9 ** 33, f)
>>> with open('data', 'rb') as f: print(pickle.load(f))
30903154382632612361920641803529

Context

StackExchange Code Review Q#35267, answer score: 2

Revisions (0)

No revisions yet.