Float to Binary и Binary to Float в Python - PullRequest
0 голосов
/ 29 ноября 2018

Может кто-нибудь сказать мне, как преобразовать число с плавающей запятой в 32-разрядную двоичную строку и из 32-разрядной двоичной строки в число с плавающей запятой в Python?

Функция 'bin' в python работает только для целых чисел.

Мне нужна однобитовая строка, как во внутреннем представлении.Я не хочу, чтобы отдельные битовые строки для числа до и после десятичных знаков, соединенных десятичным знаком между ними.

РЕДАКТИРОВАТЬ: Помеченный вопрос не объясняет, как преобразовать двоичную строку в плавающий обратно.

1 Ответ

0 голосов
/ 29 ноября 2018

Скопировано из этого ответа и отредактировано по предложению Марк Дикинсон :

import struct

def float_to_bin(num):
    return format(struct.unpack('!I', struct.pack('!f', num))[0], '032b')

def bin_to_float(binary):
    return struct.unpack('!f',struct.pack('!I', int(binary, 2)))[0]

print float_to_bin(3.14) дает «01000000010010001111010111000011».

print bin_to_float("11000000001011010111000010100100") дает «-2.71000003815».

...