【发布时间】:2013-06-26 09:43:58
【问题描述】:
我从一个模块收到一个字符串,它表示一个 long int
>>> str = hex(5L)
>>> str
'0x5L'
我现在想要的是将字符串 str 转换回数字(整数)
int(str,16) 因 L 而不起作用。
有没有办法做到这一点而不从字符串中删除最后一个 L?因为字符串也可能包含没有 L 的十六进制?
【问题讨论】:
我从一个模块收到一个字符串,它表示一个 long int
>>> str = hex(5L)
>>> str
'0x5L'
我现在想要的是将字符串 str 转换回数字(整数)
int(str,16) 因 L 而不起作用。
有没有办法做到这一点而不从字符串中删除最后一个 L?因为字符串也可能包含没有 L 的十六进制?
【问题讨论】:
使用str.rstrip;它适用于两种情况:
>>> int('0x5L'.rstrip('L'),16)
5
>>> int('0x5'.rstrip('L'),16)
5
或者这样生成字符串:
>>> s = '{:#x}'.format(5L) # remove '#' if you don' want '0x'
>>> s
'0x5'
>>> int(s, 16)
5
【讨论】:
你甚至可以使用:
>>> str = hex(5L)
>>> long(str,16)
5L
>>> int(long(str,16))
5
>>>
【讨论】: