How to read double, float and int values from binary files in python?
If the link goes broken and just in case the test.bin contains
00 00 00 00 84 D7 B7 41 80 1A 06 00 70 85 69 C0.
Your binary contains correct 41B7D78400000000 hexadecimal representation of 400000000.0 in the first 8 bytes. Running
import binascii import struct fname = r'test.bin' with open(fname, 'rb') as readfile: dob = readfile.read(8) print(struct.unpack('d', dob)[0]) print(binascii.hexlify(dob))
>> 400000000.0 >> b'0000000084d7b741'
which is also correct little endian representation of the double.
When you swap parts, you get
print(binascii.hexlify(dob[4:]+dob[:4])) >> b'84d7b74100000000'
and if you check the decimal value, it will give you 5.45e-315, not what you expect. Moreover,
struct.unpack('d', dob[4:]+dob[:4])[0] >>5.44740625e-315
So I’m not sure how you could get 400000000.02384186 from the code above. However, to obtain 400000000.02384186 using your test.bin , just skip the four bytes in the beginning:
with open(fname, 'rb') as readfile: val = readfile.read(4) dob = readfile.read(8) dob = dob[4:]+dob[:4] print(binascii.hexlify(dob)) print(struct.unpack('d', dob)[0]) >>b'801a060084d7b741' >>400000000.02384186
Binary value 0x41B7D78400061A80 corresponds to 400000000.02384186. So you first read incorrect bytes, then incorrectly swap parts and get a result close to what you expect. Considering integer value, the 400000 is 0x00061A80, which is also present in the binary, but you definitely read past that bytes, since you used them for double, so you get wrong values.
Related Query
- How can I read a number from a file and store it as a float in a list? / Python
- How would I read and write from multiple files in a single directory? Python
- How to read python files from a directory and search for functions
- python how to read bytes type data from file and convert it to utf-8?
- How do I get the list of imports and dependant files from python script?
- How to read parquet files from AWS S3 using spark dataframe in python (pyspark)
- In python how to read lines from a file and store in variable — split by space
- How to read an image file from ftp and convert it into an opencv image without saving in python
- Python lxml: How to split comma separated data and find specific values from XML-file?
- How to read input from both a file and terminal in a Python script?
- How does Python tell Int from Double
- How to upload csv file into google drive and read it from same into python
- Is it possible to use python multi-threading to read number of files from number of folders and process those files to get combined result?
- Create single CSV from two CSV files with X and Y values in python
- how to compare two json files and get the additional values or records copied to another file in python
- How to delete and return values from cursor in python
- How to read from xlsx file and storing specific column values into an array in python?
- how to continuously read and merge all files into one file in python
- How to Read data from Jdbc and write to bigquery using Apache Beam Python Sdk
- How to click on the Read more link from the first review within tripadvisor using Selenium and Python
- how to read labview double array in python from tdms file that has been saved as byte array (flatten to string then string to byte array)
- How can I read data from AWS- Aurora postgresql as python pandas DataFrame and write the same to Oracle table?
- How to read Txt file from S3 Bucket using Python And Boto3
- how I read from text file in python my dataset and applying the matrix on it
- How to create X lists from X files that are in a list and assign X values at once to a dict keys from the created lists. [python]
- Python — How to read multiple lines from text file as a string and remove all encoding?
- How can we read files from storage container azure using python
- How can I read data from a list and index specific values into Elasticsearch, using python?
- Python — read from multiple big files in paralell and yield them individually
- How can I extract mixed binary and ascii values from a bytes string like I did in 2.x?
- How can I read files with similar names on python and then work with them?
- How to read and index dynamically generating files in python
- How to read and write parquet files using python version 2.7 or less
- How to enter search for a text and retrieve values from search results through Selenium and Python
- read and write multiple files separately from the console, python
- How to use cssselect and lxml to get option values from select drop down?
- Count two values (total words & uniques) in multiple files (texts) and output a csv in Python
- Python — How to convert a string from binary to integer list?
- How to loop through csv files in a directory and write values to a two dimensional list?
- How to import and call Python functions from Perl?
- In Python 3.2 how would I dynamically open and compile a class from a specified file?
- Reading binary data (image data type) from SQL database and inflate it, Matlab vs. Python
- how can i print return values (success/failure) from a python script
- How can I find additional files installed with my python package from an included script?
- How to read a text from input file only after it is updated using python
- How to create a Duration column in Python from Start and Stop times?
- How to Get the values from a Dictionary Column and add it to the column?
- How to get rid of exponential value in python matplotlib bar graph? Instead of exponential values I want 0.1, 1, 10,100 and 1000
- Read files from azure blob storage using python azure functions
- Read contents from zipfile, apply transformation and write to new zip file in Python
More Query from same tag
- Scrape subreddit post titles and use them as filename using Praw
- I can’t access the data in my axios post request
- Python write result of XML ElementTree findall to a file
- Pyspark — Drop Duplicates of group and keep first row
- How to index a probability matrix using an argmax-matrix in NumPy?
- How can I change this function call and algorithm to find the string with the smallest value in a list of size n. w/o the min function
- Python execute remote command and don’t wait for return
- PyQt: How to stretch the width and height of a QGraphicsView and QGraphicsScene widget?
- Generate random values from boxplot
- How to run a python script with a tkinter button?
- Selenium — Scroll for screenshots
- Can’t convert ‘bytes’ object to str implicitly python
- Python Basemap drawgreatcircle has a gap in the path
- Read a CSV file and put double quotes around data items
- multiplication of arrays in python
- Imaginary Matrices in Sympy using MatrixSymbol
- Best architecture for a Python command-line tool with multiple subcommands
- Why have the smaller array drive binary search when computing the median of two sorted arrays?
- Google colab pip install
- Plot convex-hull in 3D using plotly
- How to find all (complete) sublinks from a web page using lxml in Python
- Jupyter notebook gives warning on an error
- Finding the maximum path sum from root to n-ary leaf in a tree if a negative node restarts the sum from 0
- PIL Image.open creates corrupted image
- Why can’t pip install the latest version of deap?
- Python equivalent in javascript’s valueOf()
- Cannot run python code using Jupyter notebook
- conv2d(): argument ‘input’ (position 1) must be Tensor, not str in loop function
- Changing Bokeh Slider callback_policy from throttle to mouseup not working
- Compare output of file with string / list or whatever in ansible when statement
- Is this an appropriate use for decorators?
- Can I create salt keys in WordPress without using the API?
- Need help on search_count() function in odoo
- Different frames displayed on one frame
- SQLAlchemy filtering Children in one-to-many relationships
Считывание бинарных данных формата double
Доброго времени суток, уважаемые форумчане. Интересует вопрос, как в Python 3 осуществить чтение из файла чисел типа double с двойной или одинарной точностью? Хотелось бы использовать решение, аналогичное функции fread из Matlab. Заранее благодарен.
Чтение бинарных данных формата dat
]Помогите прочитать данные с бинарного файла формата dat. Данный файл принадлежит навигационной.
Считывание бинарных данных из SqlLite
Пытаюсь считать данные типа blob из базы данных с использованием драйвера SqlLite. Подключаюсь к.
Перевод данных из формата Double в Real
программа считает в real , потом переводит файлы в double для матлаба , а теперь не могу сделать.
Чтение бинарных файлов неизвестного формата
Доброго времени суток всем. Вот гуляя по просторам интернетов регулярно натыкаюсь на программы.
Считывание бинарных файлов
Здравствуйте! Подскажите, пжлст! Имеется бинарный файл. 1) Нужно его считать; 2) после считывания.
Все можно узнать, рассуждая.
Сообщение от bittraid
Число́ двойно́й то́чности (Double precision, Double) — компьютерный формат представления числа с плавающей запятой, занимающий в памяти 64 бита, или 8 байт. Как правило, обозначает числа с плавающей запятой стандарта IEEE 754.
Примеры чисел двойной точности
0x 3ff0 0000 0000 0000 = 1
0x 3ff0 0000 0000 0001 ≈ 1,0000000000000002 (наименьшее число, большее 1)
0x 3ff0 0000 0000 0002 ≈ 1,0000000000000004
0x 4000 0000 0000 0000 = 2
0x c000 0000 0000 0000 = –2
Добавлено через 1 минуту
Сообщение от bittraid
это функция для чтения двоичных данных. Второй аргумент определяет размер выходного вектора, третий — размер/тип прочитанных элементов.
Чтобы воссоздать это в Python, вы можете использовать модуль array:
f = open(. ) import array a = array.array("L") # L is the typecode for uint32 a.fromfile(f, 3)
Это будет читать три значения uint32 из файла f, которые затем доступны в a. Из документации fromfile:
Прочитайте n элементов (как машинные значения) из файлового объекта f и добавьте их в конец массива. Если доступно меньше n элементов, EOFError будет поднят, но элементы, которые были доступны, все еще вставлены в массив. f должен быть реальным встроенным файловым объектом; что-то еще с методом read() не будет.
Массивы реализуют протокол последовательности и, следовательно, поддерживают те же операции, что и списки, но вы также можете использовать метод .tolist() для создания обычного списка из массива.
Добавлено через 1 минуту
Matlab fread имеет возможность считывать данные в матрицу формы [m, n], а не просто считывать ее в вектор-столбец.
код Python для двумерного массива
Вы можете обрабатывать этот сценарий на Python, используя Numpy shape и transpose.
import numpy as np with open(inputfilename, 'rb') as fid: data_array = np.fromfile(fid, np.int16).reshape((-1, 2)).T
Добавлено через 11 секунд
-1 сообщает numpy.reshape, чтобы указать длину массива для этого измерения на основе другого измерения — эквивалента представления бесконечности Matlab inf.
.T переносит массив так, чтобы он представлял собой двумерный массив с первым размером — ось — имела длину 2.