我的查询适用于以下示例:
c0b0="FF FF FF FF FF FF FF FF FF 7F"
print c0b0
for ch in c0b0:
a=str(ch)
print "{0} {1}".format(ch,type(ch))
print hex(int(ch,16))
如果看到输出:
sh-4.3$ python main.py
FF FF FF FF FF FF FF FF FF 7F
F <type 'str'>
0xf
F <type 'str'>
0xf
<type 'str'>
Traceback (most recent call last):
File "main.py", line 8, in <module>
print hex(int(ch,16))
ValueError: invalid literal for int() with base 16: ''
看到这个我们当然可以说ch不是元组而是字符串。但仍然int(ch,16)认为ch无效的文字。
有人可以指出我失踪的地方以及它如何与int(,16)一起使用吗?
答案 0 :(得分:4)
执行for ch in c0b0
时,您将迭代初始字符串的各个字符,而不是空格分隔的十六进制数字对。您的代码在第一个空格中失败。
我认为你需要for ch in c0b0.split()
,它首先将原始字符串分成字符串列表(在空格上拆分),然后迭代列表。
答案 1 :(得分:0)
您应该跳过space
。对于此space
,您收到此错误。
c0b0="FF FF FF FF FF FF FF FF FF 7F"
print c0b0
for ch in c0b0.split(" "):
a=str(ch)
print "{0} {1}".format(ch,type(ch))
print hex(int(ch,16))
答案 2 :(得分:0)
感谢大家指出我的空间,是的,它使用了以下代码:
c0b0="FF FF FF FF FF FF FF FF FF 7F"
print c0b0
for ch in c0b0:
if(ch == " "):
continue
a=str(ch)
print "{0} {1}".format(ch,type(ch))
print hex(int(ch,16))