将十六进制转换为十进制不会返回结果

时间:2014-05-19 11:08:11

标签: python

.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 questionthis one的帮助下编写代码,但仍然不知道问题出在哪里。

1 个答案:

答案 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构造只会在被要求时读取下一行。