Writing integers in binary to file in python

2024/10/9 10:23:43

How can I write integers to a file in binary in Python 3?

For example, I want to write 6277101735386680763835789423176059013767194773182842284081 to a file in binary in exactly 24 bytes (unsigned, I will only be working with positive integers). How can I do this? I tried the following:

struct.pack("i", 6277101735386680763835789423176059013767194773182842284081)

This results in

ValueError: cannot fit 'int' into an index-sized integer

I have tried the same with some other formats ("l", "Q"), but those also result in errors:

struct.error: argument out of range

If I could convert the integer to exactly 24 bytes, I would be able to write to the file, since I know how to do that. However, I can't seem to convert the integers into bytes.

Also, how do I make sure that exactly 24 bytes are written per integer? I will also be writing smaller numbers (1000, 2000, 1598754, 12), however those should also take 24 bytes.

And how can I read the integers again from the file afterwards?

Answer

With Python 3 you can do the following:

i = 6277101735386680763835789423176059013767194773182842284081
with open('out.bin', 'wb') as file:file.write((i).to_bytes(24, byteorder='big', signed=False))with open('out.bin', 'rb') as file:j = int.from_bytes(file.read(), byteorder='big')print(j)

Output:

$ python3 tiny.py
6277101735386680763835789423176059013767194773182842284081
https://en.xdnf.cn/q/70026.html

Related Q&A

Dropping some columns when using to_csv in pandas

I have a data frame which I want to write to tow files, one that contains all of the columns and one that has only a subset of the columns So for this data frame: Out_dataOut[9]: A B …

Setting Max Results in API v4 (python)

In v3 of the API Im seeing that there was a max-results parameter that could be passed to get more than 1000 records. I havent been able to figure out how to pass that parameter in v4 of the API using …

Extract text between two different tags beautiful soup

Im trying to extract the text content of the article from this web page.Im just trying to extract the article content and not the "About the author part".The problem is that all the content a…

Add column to pandas without headers

How does one append a column of constant values to a pandas dataframe without headers? I want to append the column at the end.With headers I can do it this way:df[new] = pd.Series([0 for x in range(le…

Replace NaN values of pandas.DataFrame with values from list

In a python script using the library pandas, I have a dataset of lets say 100 lines with a feature "X", containing 36 NaN values, and a list of size 36.I want to replace all the 36 missing va…

Boring Factorials in python

I am trying to understand and solve the following problem :Sameer and Arpit want to overcome their fear of Maths and so they have been recently practicing Maths problems a lot. Aman, their friendhas be…

The flask host adress in docker run

I want to run a flask application in Docker, with the flask simple http server. (Not gunicorn)I got a host setting problem. In the flask app.py, it should be work as the official tutorial, but it doesn…

Extracting text from pdf using Python and Pypdf2

I want to extract text from pdf file using Python and PYPDF package. This is my pdf fie and this is my code:import PyPDF2 opened_pdf = PyPDF2.PdfFileReader(test.pdf, rb)p=opened_pdf.getPage(0)p_text= p…

Is it possible to change turtles pen stroke?

I need to draw a bar graph using Pythons turtle graphics and I figured it would be easier to simply make the pen a thick square so I could draw the bars like that and not have to worry about making doz…

How to make a local Pypi mirror without internet access and with search available?

Im trying to make a complete local Pypi repository mirror with pip search feature on a server I can only connect an external hard drive to. To be clear, I dont want a simple caching system, the server …