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

2024-09-30 10:28:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我的查询用于以下示例:

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)吗?你知道吗


Tags: inpyformat示例formaintypesh
3条回答

你应该跳过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))

谢谢大家给我指出空间,是的,它使用了以下代码:

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

当您执行for ch in c0b0操作时,您是在初始字符串的各个字符上进行迭代,而不是在以空格分隔的十六进制数字对上进行迭代。您的代码在第一个空格处失败。你知道吗

我认为您需要for ch in c0b0.split(),它首先将原始字符串分割成一个字符串列表(按空格分割),然后再遍历该列表。你知道吗

相关问题 更多 >

    热门问题