Python尾随L问题

时间:2011-05-06 21:28:51

标签: python

我正在使用Python来编写嵌入式系统中内存(32位地址)中特定位置的某些操作。

当我将这些地址转换为字符串,整数和十六进制值时,似乎会出现尾随的L.这可能是一个真正的痛苦,例如以下看似无害的代码将无法正常工作:

int(hex(4220963601))

或者这个:

int('0xfb96cb11L',16)

有谁知道如何避免这种情况?

到目前为止,我已经提出了这种方法去除字符串中的尾随L,但它看起来并不优雅:

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

4 个答案:

答案 0 :(得分:21)

如果使用

进行转换为十六进制
 "%x" % 4220963601

既不会有0x也不会有L

答案 1 :(得分:12)

对这些值调用str()时应省略尾随的“L”。

答案 2 :(得分:0)

这就是我所做的:int(variable_which_is_printing_as_123L),它对我有用。这适用于普通整数。

答案 3 :(得分:-1)

这可以帮助某人:

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