将定点转换为浮点数的问题

问题描述 投票:0回答:1

我正在使用python numpy读取minew信标,现在我在将固定点转换为float时遇到问题。

在Minew E7数据表上,我具有以下信息:Datasheet infos

我必须将定点8.8转换为浮点数。

我正在使用以下代码进行转换:

from rig.type_casts import fp_to_float

def convertFixedPToFloat(hexaString):
   hexaInt16 = int(hexaString,16)
   f4 = fp_to_float(n_frac=8)
   return (f4(hexaInt16))

如果查看数据表,十六进制数字0xFFFE必须为-0.01,但是我的函数返回的是:255.9921875

我的phython版本是Python 3.7.3

我如何以严格的方式进行转换?

python numpy hex fixed-point
1个回答
0
投票

您需要将无符号整数转换为有符号整数。

if hexaInt16 >= 0x8000:
    hexaInt16 -= 0x10000

以上内容仅针对您所提问的数字。对于更通用的从无符号到有符号的转换,可以使用此功能。

def signed(n, bits=16):
    n &= (1 << bits) - 1
    if n >> (bits - 1):
        n -= 1 << bits
    return n
© www.soinside.com 2019 - 2024. All rights reserved.