python for循环迭代器和int(,16)

时间:2017-07-26 16:30:49

标签: python for-loop int

我的查询适用于以下示例:

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)一起使用吗?

3 个答案:

答案 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))