当前位置: 首页 > 面试题库 >

获取并操纵float的位模式为整数

太叔英锐
2023-03-14
问题内容

在Python 2.5中,我有一个浮点数,我想获取并操纵其位模式为整数。

例如,假设我有

x = 173.3125

在IEEE 754格式中,x十六进制的位模式为432D5000

如何在该位模式上获取和操纵(例如,执行按位运算)?


问题答案:

您可以使用以下模块获取所需的字符串(显然暗含32位大尾数表示形式; Python内部使用本机尾数和64位浮点数)struct

>>> import struct
>>> x = 173.125
>>> s = struct.pack('>f', x)
>>> ''.join('%2.2x' % ord(c) for c in s)
'432d2000'

这还不能让您执行按位运算,但是您可以再次使用struct将字符串映射为一个int:

>>> i = struct.unpack('>l', s)[0]
>>> print hex(i)
0x432d2000

现在您int可以在任何按位操作中使用它(如果在执行完上述操作后还需要float再次操作,则可以按照相反的两个步骤进行操作)。



 类似资料:
  • 问题内容: 我使用的是float常数,并将对象的私有float变量设置为下面的float常数,但是当对象输出设置为它的值时,它将四舍五入到float的最后一位。 输出:956.35626 对象中的变量声明为,下面是getter和setter。 知道为什么会这样吗? 问题答案: 由于单精度IEEE754浮点数仅具有23位精度(24位包括开始时的隐式1位)。 这大约等于七个十进制数字,您可以看到 您的

  • 我有一个基本的疑问,我们可以增加整数类对象的引用,而不是任何其他类的引用(D类有1个整数数据成员和一个参数化构造函数)。 这里x和d都是引用,但我们仍然可以增加整数引用,而不增加任何其他引用。我错过了一些非常基本的东西,请帮助我。

  • 问题内容: 我需要将浮点数格式化为“ n”个小数位。 试图使用BigDecimal,但返回值不正确… 我需要返回一个浮点数,该浮点数具有我指定的小数位数。 我不需要价值回报 问题答案: 你还可以传递float值,并使用:

  • 为什么下面的语句出现错误 当以下代码正常工作时

  • 用 upstart 控制 Ceph 用 ceph-deploy 把 Ceph Cuttlefish 及更高版部署到 Ubuntu 之后,你可以用基于事件的 Upstart 来启动、关闭 Ceph 节点上的守护进程。 Upstart 不要求你在配置文件里定义守护进程例程。 用下列命令列出 Ceph 作业和例程: sudo initctl list | grep ceph 详情参见 initctl 。

  • 我是一个绝对的初学者,有以下任务我需要完成,但我完全困惑,无法在网上找到任何东西,希望有人能帮助我。 任务: 将变量“pattern”声明为一个32位的整数,并用位模式0011 1101 0101 1110 0101 1111 0001 1010(3D5E 5F1A)初始化。打印变量,将位7设置为1,然后再次打印。 鉴于: 当我理解正确时,默认情况下整数是用32位声明的,所以这部分对我来说没有什么