在.txt
文件中,我写了几个十六进制数字:
'3001','1018','1200'
这些数字必须转换为十进制形式。
CODE:
indeks = {}
f = open("data.txt")
data = f.readlines()
for line in data:
key, value = line.split(",")
indeks[key.strip()] = value.strip()
f.close()
pass
for s in indeks:
pass
def i():
ser.write(chr(s))
x=ser.read(4)
z=struct.unpack("h", x)[0]
i = int(z, 16)
print i
问题在于它不会打印我i
。
我在this question和this one的帮助下编写代码,但仍然不知道问题出在哪里。
答案 0 :(得分:1)
您可以阅读该文件的内容,然后使用int
函数将其转换为数字,就像这样
with open("Input.txt") as in_file:
for line in in_file:
data = line.rstrip().replace("'", "").split(",")
print data
print [int(number, 16) for number in data]
# [12289, 4120, 4608]
下面,
in_file.read()
- 将读取文件的内容
rstrip()
- 将删除字符串末尾的空格字符
replace(",", "")
- 将删除所有'
split(",")
- 将根据,
此时,数据将如下所示
['3001', '1018', '1200']
现在我们使用int
函数将每个项目转换为数字,然后我们传递第二个参数16
以使int
将数据视为十六进制。
注意:我们使用for line in file_object
构造,这比readlines
更好,因为readlines
将读取整个文件并将其作为内存存储为列表,但for
构造只会在被要求时读取下一行。