Подтвердить что ты не робот

Проблема с Python Trailing L

Я использую Python для script некоторых операций в определенных местах в памяти (32-разрядные адреса) во встроенной системе.

Когда я конвертирую эти адреса в строки и из них, целые и шестнадцатеричные значения, кажется, появляется трейлинг-L. Это может быть настоящей болью, например, следующий, казалось бы, безобидный код не будет работать:

int(hex(4220963601))

Или это:

int('0xfb96cb11L',16)

Кто-нибудь знает, как избежать этого?

До сих пор я придумал этот метод, чтобы удалить конечный L из строки, но это не выглядит очень элегантным:

if longNum[-1] == "L":
   longNum = longNum[:-1]
4b9b3361

Ответ 1

Если вы сделаете преобразование в hex, используя

 "%x" % 4220963601

не будет ни 0x, ни конечного L.

Ответ 2

Вызов str() для этих значений должен опускать конечный "L".

Ответ 3

Это то, что я сделал: int (variable_which_is_printing_as_123L), и это сработало для меня. Это будет работать для нормальных целых чисел.

Ответ 4

это может помочь кому-то:

>>>n=0xaefa5ba7b32881bf7d18d18e17d3961097548d7cL
>>>print "n=","%0s"%format(n,'x').upper()
n= AEFA5BA7B32881BF7D18D18E17D3961097548D7C