写个测试代码时,发现有个问题:字符串中含有字母怎么转为整形?
例如:
str = "0x1010"
例如:
str = "0x1010"
要将str转为int,不能直接用int,貌似int()会抛出异常
代码如下:
list = ["0x00","0x101","0x000","0x01011"];
newlist= [];
for i in list:
print(i);
int_i = int(i);
错误:0x00
Traceback (most recent call last):
File "F:/Python33/readlist.py", line 4, in <module>
int_i = int(i)
ValueError: invalid literal for int() with base 10: '0x00'
后来在网上查了一下资料
int转换字符串的时候,默认字符串中全为数字了,
一般是将字符串中的字母替换掉,然后转为int
另外,用int(i,16)
表示i里面的数字为16进制数,而非是将i转为16进制。
正确代码:
list = ["0x00","0x101","0x000","0x01011"];
newlist= [];
for i in list:
print(i);
print(type(i));
print(i);
int_i = int(i,16);
#print(type(int_i));
if(0 != int_i):
newlist.append(int_i);
print(newlist);