Convert bytes to float python

Как Python конвертирует байты в float?

Какой печатает 5.0 без ошибок (в Linux с кодировкой utf-8). Я очень удивлен, что это не дает ошибки, поскольку Python не должен знать, какая кодировка используется для объекта bytes. Любое понимание?

@Kasramvd: документация для float() гласит, что она принимает str , число или тип, который реализует __float__ . bytes не реализуют __float__ .

@MartijnPieters Здесь упоминается, что если аргумент является строкой, он должен содержать десятичное число, необязательно с предшествующим знаком и необязательно встроенное в пробел. b’5′ следует этому правилу? Хотя это должно было быть четко указано в документации.

@MartijnPieters Действительно, я имею в виду, что поскольку байты представляют собой последовательность символов и они также могут содержать десятичные дроби, это также должно быть упомянуто, что, как вы упомянули, является ошибкой в документации.

1 ответ

При передаче объекта bytes float() обрабатывает содержимое объекта как байты ASCII. Этого достаточно здесь, поскольку преобразование из строки в float допускает только цифры ASCII и буквы плюс . и _ любом случае (единственными кодовыми точками, отличными от ASCII, которые будут разрешены, являются непрозрачные кодовые точки), и это аналогично тому, как int() обрабатывает ввод bytes .

Под капотом реализация выполняет следующее:

  • потому что вход не является строкой, на PyNumber_Float() (для объектов str код перескакивает прямо в PyFloat_FromString ).
  • PyNumber_Float() проверяет метод __float__ , но если он недоступен, он вызывает PyFloat_FromString()
  • PyFloat_FromString() принимает не только объекты str , но и любой объект, реализующий буферный протокол. Имя String является удержанием Python 2, тип str Python 3 называется Unicode в реализации C.
  • bytes реализуют буферный протокол, а макрос PyBytes_AS_STRING используется для доступа к внутреннему буфере C, содержащему байты.
  • Комбинация двух внутренних функций с именем _Py_string_to_number_with_underscores() и float_from_string_inner() затем используется для анализа ASCII-байтов в значение с плавающей запятой.
Читайте также:  Python site packages folder

Для реальных str строк реализация CPython фактически преобразует любую строку, отличную от ASCII, в последовательность байтов ASCII, только просматривая кодовые точки ASCII во входном значении и преобразуя любой символ пробела без ASCII в ascii 0x20 пробелов, чтобы затем использовать тот же самый _Py_string_to_number_with_underscores() / float_from_string_inner() .

Я вижу это как ошибку в документации и подал проблему с проектом Python, чтобы обновить его.

Спасибо за отличный ответ. Итак, чтобы было ясно, это не удастся с определенными кодировками, такими как UTF-16?

@static_rtti: абсолютно, потому что байты \x00 не будут приняты. Байты должны быть только ASCII и соответствовать правилам интерпретации строки float() .

Ещё вопросы

  • 0 Что заставляет FireFox сдвигать поплавок влево на 50%?
  • 1 в Websphere я не могу получить переменные JVM
  • 0 Пересвязать модели сервисного объекта
  • 1 Удаление белой внутренней границы из выпадающего списка
  • 0 Инжекция $ cookies angular.js в контроллер
  • 0 Requirejs — Динамическое внедрение зависимостей модуля с переменными
  • 0 Пароль типа предоставления Symfony2 FOSOAuthServerBundle требует секрет клиента
  • 0 Как работает Facebook / Gmail «выход с других устройств»?
  • 1 Добавление цветовой карты поверх плитки карты с помощью Bokeh
  • 0 JQuery заменить конкретные слова при наведении курсора
  • 0 Почему не работает моя быстрая сортировка
  • 0 Laravel репозиторий для рекурсивной функции меню
  • 0 простое исключение в JavaScript, чтобы код не работал
  • 1 Maven — не удалось выполнить цель
  • 1 Java 2d Game: рендеринг Q
  • 0 Как перемещаться по пунктам / деталям в списке JqeuryMobile
  • 0 Doxygen — групповые функции и их поиск по индексу
  • 1 Преобразование имен столбцов в числа?
  • 0 Не удается получить доступ к AWS RDS MySQL + PHP на Heroku
  • 0 поиск подстроки в конце строки в запросе sql
  • 0 Как добавить несколько дат в текстовой области, используя JQuery DatePicker
  • 1 Bing Maps v8 — встроенная канцелярская кнопка SVG не запускает правильный информационный блок
  • 1 OWIN — Selfhosting WebApi без определенного порта
  • 1 Создать идентификатор группы для отметок времени
  • 1 Обрабатывать всплывающее окно JavaScript внутри div
  • 0 PHP strtolower с конкретным символом (например: äüö)
  • 0 Ссылочное выражение в switch
  • 1 Почему .cfg не может быть переписан, но вместо этого создан новый файл?
  • 0 Содержание сайта обрезается и проблемы с макетом
  • 0 OpenCV2 с Eclipse
  • 1 Когда не все ваши функции полиморфны
  • 0 Стрлен переменной GET
  • 1 используя python concurrent.futures представьте с нумерацией процессов
  • 0 rails: запрос has_many для получения списка объектов
  • 0 Sublime Text 3: SublimeLinter: c отключен («cppcheck» не может быть найден)
  • 1 Круглый поплавок до ближайшего 2/100
  • 0 Наложение CSS не работает
  • 1 Как убрать выделение синего цвета выделенным элементом в listBox1 при нажатии на элемент? [Дубликат]
  • 1 что такое ключ SendKey для Windows
  • 0 Странное поведение при мониторинге класса по угловой директиве внутри этой директивы
  • 0 Дизайн базы данных — много таблиц с уникальными тегами или одна таблица со всеми из них?
  • 1 Python Seaborn Boxplot: накладывать 95 процентилей на усы
  • 0 Замена строкового значения в PHP
  • 0 Проверка типа шаблонных параметров класса
  • 0 Удалить несколько строк в HTML-таблице с помощью JavaScript?
  • 0 Как выбрать только отфильтрованные данные таблицы в angularjs?
  • 1 Array picturebox событие click в c #
  • 1 Migradoc динамический размер страницы
  • 0 Форма входа Python Mechanize, отправка ввода в поле со случайно сгенерированным именем
  • 0 JQuery обходится, чтобы добавить класс
Читайте также:  Python train test split stratify

Источник

How to Convert a Byte array to Float in Python : 4 Steps

Concatenate Two Arrays Python into a List

Do you want to convert a byte array to float in Python? If yes then you have come to the right place. In this post, you will know how to convert a byte array to float in Python using steps.

Steps to convert a byte array to float in Python

Let’s know all the steps you will follow to convert the byte array to float in Python.

Step 1: Import the required library

The first step is to import all the required libraries for the implementation of the example. In our example, I am using only the struct module. So let’s import it using the import statement.

Step 2: Create a sample byte array

The second step is to create a sample byte array that will use in the future to convert it into float.

The following line of code will use for byte array creation.

Step 3: Convert the byte array to the binary string

The next step is to first convert the byte array to a binary string. To do this you have to use the join() function with the ‘b’. The byte array is passed as an argument for the join() function.

Use the below line of code to convert the byte array to a binary string.

Step 4: Convert the binary string to float

Now the final step is to convert the binary string to a byte array. For this, you will use the struct.unpack() function. You will pass two arguments. One is the ‘

Читайте также:  Python decorator for method

The output you will get is an array. You have to select the first element.

Add the below line of code for the conversion.

convert byte array to float

Output

Conclusion

Converting a byte array to float has many use cases. It helps you in dealing with binary data or network communications. Other use cases are File I/O for reading and writing binary data to files and Data Parsing and Interpretation. The above steps will convert the byte array to float in Python.

I hope you have liked this tutorial. If you have any queries then you can contact us for more help.

Join our list

Subscribe to our mailing list and get interesting stuff and updates to your email inbox.

We respect your privacy and take protecting it seriously

Thank you for signup. A Confirmation Email has been sent to your Email Address.

Источник

Оцените статью