[当我尝试转换大数字时,最后得到的数字不会动,而且还有L字符。如何在000L末尾删除4个多余的字符?
8b8dbbc584d9c000L
8b8dc4ddd34c6000L
8b8dcdf621bf0000L
8b8dd70e7031a000L
8b8de026bea44000L
#!/usr/bin/python
import sys
def int_tuple_from_cmdline():
"""return exactly two integers form sys.argv
or die with an error message
"""
import sys
args = sys.argv[1:] # drop first entry (progpath)
if len(args) != 2:
raise SystemExit("\n#################################################\n# Please enter both a
start and stop parameter. #\n#################################################")
for i in range(len(args)):
try:
args[i] = int(args[i])
except ValueError:
raise SystemExit("\n#################################################\n# Parameter %d is not an integer. You entered: %s #\n#################################################\n" %(i+1,args[i]))
return tuple(args)
start, stop = int_tuple_from_cmdline()
r = start - 1
while r < stop:
r = r + 1
hx = hex(r)[2:]
print(hx)
如果您只是删除字符串的最后四个字符,则可以使用切片来执行:
s = "8b8dbbc584d9c000L"
trimmed = s[:-4] #8b8dbbc584d9c
请注意,如果原始字符串不包含至少四个字符,它将引发异常。
还请注意,我的答案与从十进制到十六进制的转换[本身]无关,我只是在回答它的修整部分。