浮动到IEEE-754,分成两个16位字

时间:2017-07-27 14:48:46

标签: python floating-point type-conversion byte

我需要得到Python浮点数的IEEE-754表示的两个字(每个字是16位)。 这些单词需要作为ints传递给函数。

当我做我现在使用的东西时,我有时会得到太大的注意力。

OverflowError: Python int too large to convert to C long

这是我现在使用的代码:

def floatToWords(self, value):
        s = struct.pack('f', value).encode('hex')
        word1 = int(s, 16)
        word2 = int(s[2:4], 16)
        return word1, word2

words = self.floatToWords(concentration)
modbus.write_input_register(self.modbusAddress['concentration'],   words[0])
modbus.write_input_register(self.modbusAddress['concentration']+1, words[1])

我是否正确转换了它?

PS:Python 2.6

1 个答案:

答案 0 :(得分:3)

我有充分的理由认为正确的方法是

word1, word2 = struct.unpack('>HH', struct.pack('>f', value))

我曾经在IEEE 754上写过一个toy module,它提供了兼容的结果。

相关问题