今天我正在阅读一个文件,并提取信息。我已经弄清楚了几乎所有事情,但是由于某种原因,我遇到了一个非常非常烦人的问题!我读了整行并使用 .split() 命令将“句子”分解为“单词”,对吗?然后我将“单词”作为别名:
startAddress = line[ 0 ]
length = line[ 2 ].strip( "(" ).strip( ")" )
...
endAddress = startAddress + length
注意:我去掉了长度,因为在数据文件中它被 () 包围,后来,当我将它加载到 .csv 文件时会导致问题,因为 () 被用作底片。
无论如何,如果我将 0x00230008 作为起始地址并且 (4) 作为长度,我的程序将 0x002300084 作为结束地址而不是 0x00230008C,但是如果我使用 hex(length) 或 hex(startAddress) 甚至 hex(str (length) 或 hex(str(startAddress)) 它会抛出一个错误,说无法将十六进制数字转换为十六进制。同样我也无法将它们转换为整数。
真的,我需要做的就是添加起始地址(以十六进制表示,但以字符串形式读入)和长度(以 int 形式读入并以 int 形式读入)。我尝试过将它们转换,但没有不行。我也试过这条线
endAddress = startAddress + length - 1
它告诉我“ -: 'str' 和 'int' 不支持的操作数类型”所以,我已经尽可能多地玩弄它,但我只是没有弄清楚这一点。我正在考虑通过条删除十六进制值前面的 0x,但随后它作为整数读入并且不正确。
我尝试的最后一件事是直接使用 line[0] 和 line[2](带条)来查找 endAddress,但它给出了所有相同的错误。我试图通过声明 startAddress = 0xFFFFFFFF 来强制输入,然后再将其分配为 line[0],但这不起作用。那么,如果它抱怨它不是十六进制的,我该如何将字符串转换为十六进制数字呢?或者也许我添加它们的方法是错误的?我可以使用其他添加方法吗?
对我来说最大的困惑是,如果我尝试将 startAddress 转换为字符串,然后再转换回十六进制数字,它仍然会抱怨。