Подписанный эквивалент шестнадцатеричного значения дополнения 2

На терминале python, когда я это делаю: –

In [6]: 0xffffff85 Out[6]: 4294967173 In [9]: "%d" %(0xffffff85) Out[9]: '4294967173' 

Я хотел бы иметь возможность дать в 0xffffff85 и получить подписанное эквивалентное десятичное число в python (в данном случае -123 ). Как я мог это сделать?

В C я мог бы сделать это как: –

 int main() { int x = 0xffffff85; printf("%d\n", x); } 

One Solution collect form web for “Подписанный эквивалент шестнадцатеричного значения дополнения 2”

Вы можете сделать это, используя библиотеку ctypes .

 >>> import ctypes >>> ctypes.c_int32(0xffffff85).value -123 

Вы также можете сделать то же самое с помощью библиотеки bitstring .

 >>> from bitstring import BitArray >>> BitArray(uint = 0xffffff85, length = 32).int -123L 

Без внешних / внутренних библиотек вы могли бы сделать:

 int_size = 32 a = 0xffffff85 a = (a ^ int('1'*a.bit_length())) + 1 if a.bit_length() == int_size else a 

Это занимает дополнение 2 к числу a , если bit_length() числа a равен вашему значению int_size . Значение int_size – это то, что вы берете как максимальную длину бита вашего двоичного числа с подписью [здесь a ].

Предполагая, что число подписано, отрицательное число бита int_size будет иметь свой первый бит (бит знака), установленный в 1. Следовательно, bit_length будет равен int_size .

  • Значительное пробел в C #, например Python или Haskell?
  • Печать переменной во встроенном интерпретаторе Python
  • python ctypes и sysctl
  • Python-интерпретатор как класс c ++
  • Как установить Selenium для Python и C #
  • для цикла: C ++ и python
  • Самый простой способ сжимать в Python и распаковывать с помощью распаковки C # (и наоборот)
  • Нити Python в C
  • Python - лучший язык программирования в мире.