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