如何读取浮点数的特定位?

时间:2019-10-05 03:57:04

标签: python-3.x numpy

我想读取浮点数的特定位置,例如x [16:3](第4位至第17位)。 像这样C语言的情况很简单

bits = x & ((2**L - 1) << M);

在Python的情况下,浮点数不允许使用'&'掩码操作。 那如何在Python上做呢?

1 个答案:

答案 0 :(得分:1)

我不确定是否能正确理解您的语言,但这将是我的解决方案:

import struct

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

x=16.4637159674589415472835945

string=str(x)
bitx=float_to_bin(x)

part_of_string=string[4:17]
part_of_bitx=bitx[4:17]

我从其他地方(可能是Stackoverflow的某个地方)复制了一次float_to_bin函数,以使float成为二进制数。该函数已经使二进制数成为字符串,因此您就可以使用通常的索引了。如果要读取浮点数的特定位置,只需将该数字设为字符串,然后使用索引即可。

我希望我能正确回答你的问题。最好, lepakk