Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 30, 2016 04:07:04

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Чтение modbus RTU запроса python 1.5

Svet
А вот когда получаю FF E2 = это должно быть -30. Но я int('FFE2',16) получаю 65506. Как получать отрицательные целые данные?
Ну так это же дополнительный код 2^16 - 65506 = 30

PS: как то так навскидку:
 def to_int(s):
    n = int(s, 16)
    if n >= 0x8000:
        n = -1 * (0xffff - n + 1)
    return n



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Отредактировано PooH (Дек. 30, 2016 13:30:52)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version