Проблема преобразования фиксированных точек в число с плавающей точкой в ​​python - PullRequest
0 голосов
/ 17 января 2020

Я читаю маяк, используя python numpy, и теперь у меня проблемы с преобразованием фиксированных точек в плавающие.

На листе данных Minew E7 у меня есть следующая информация: Информация о листе

Мне нужно преобразовать фиксированную точку 8,8 в число с плавающей точкой.

I Я использую следующий код для преобразования:

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

Как я могу преобразовать его на правильном пути?

1 Ответ

0 голосов
/ 17 января 2020

Вам необходимо преобразовать целое число без знака в число со знаком.

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

Выше указано значение c для чисел в вашем вопросе. Для более общего назначения преобразования без знака в подпись вы можете использовать эту функцию.

def signed(n, bits=16):
    n &= (1 << bits) - 1
    if n >> (bits - 1):
        n -= 1 << bits
    return n
...