Ответ 1
Если вы сделаете преобразование в hex, используя
"%x" % 4220963601
не будет ни 0x
, ни конечного L
.
Я использую Python для script некоторых операций в определенных местах в памяти (32-разрядные адреса) во встроенной системе.
Когда я конвертирую эти адреса в строки и из них, целые и шестнадцатеричные значения, кажется, появляется трейлинг-L. Это может быть настоящей болью, например, следующий, казалось бы, безобидный код не будет работать:
int(hex(4220963601))
Или это:
int('0xfb96cb11L',16)
Кто-нибудь знает, как избежать этого?
До сих пор я придумал этот метод, чтобы удалить конечный L из строки, но это не выглядит очень элегантным:
if longNum[-1] == "L":
longNum = longNum[:-1]
Если вы сделаете преобразование в hex, используя
"%x" % 4220963601
не будет ни 0x
, ни конечного L
.
Вызов str()
для этих значений должен опускать конечный "L".
Это то, что я сделал: int (variable_which_is_printing_as_123L), и это сработало для меня. Это будет работать для нормальных целых чисел.
это может помочь кому-то:
>>>n=0xaefa5ba7b32881bf7d18d18e17d3961097548d7cL
>>>print "n=","%0s"%format(n,'x').upper()
n= AEFA5BA7B32881BF7D18D18E17D3961097548D7C