我需要得到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
答案 0 :(得分:3)
我有充分的理由认为正确的方法是
word1, word2 = struct.unpack('>HH', struct.pack('>f', value))
我曾经在IEEE 754上写过一个toy module,它提供了兼容的结果。