所以我试图从包含十六进制数的文本文件中读取一行,然后将其转换为十进制数,然后除以3。
但是我收到一条错误消息:“ValueError:int((16)的无效文字:”
这是我做的:
f = open('simp.txt','r')
line = f.readline()
while line:
line = f.readline()
temp = (int(str(line[3:11]),16))//3
print(temp)
有人能告诉我我的代码有什么问题吗?谢谢!
编辑:这是我的simp.txt中的内容:
00000000
000032C8
所以节目应该打印:“4333”,因为13000 // 3 = 4333。
答案 0 :(得分:0)
也许是线击中了不能转换为十六进制的值;例如,int('1X',16)将给出ValueError。如果这不是问题,请打印行并分享价值或提供simp.txt
答案 1 :(得分:0)
这是因为当您使用readline时,它不会从字符串中删除\n
或\r
字符,因此您最终会尝试将其转换为整数
使用f.readline().strip()
更好的方法是:
with open('simp.txt', 'r') as f:
for line in f:
temp = int(line.strip(), 16) // 3
print(temp)
答案 2 :(得分:0)
您应该使用line.strip()
删除行尾的\n
或\r
。
您可以尝试这样:
with open("simp.txt", "r") as fp:
data = fp.readline()
value = int(data.strip(), 16) / 3
print value