今日、私はファイルを読み込んで情報を抽出しています。私はほとんどすべてを理解しましたが、何らかの理由で非常に厄介な問題が発生しています! 行全体を読み取り、.split() コマンドを使用して「文」を「単語」に分割しますよね? そして、「単語」を次のようにエイリアスします。
startAddress = line[ 0 ]
length = line[ 2 ].strip( "(" ).strip( ")" )
...
endAddress = startAddress + length
注: データ ファイルでは () で囲まれているため、長さを取り除きます。() はネガとして使用されるため、後で .csv ファイルに読み込むときに問題が発生します。
とにかく、0x00230008 を開始アドレス、(4) を長さにすると、プログラムは 0x00230008C ではなく 0x002300084 を終了アドレスにしますが、hex(length) または hex(startAddress) または hex(str (length) または hex(str(startAddress)) 16 進数を 16 進数に変換できないというエラーがスローされます。同様に、それらを整数に変換することもできません。
本当に、私がする必要があるのは、開始アドレス (16 進数ですが、文字列として読み込まれます) と長さ (int で int として読み込まれます) を追加することだけです。動作しません。ラインもやってみた
endAddress = startAddress + length - 1
これは、「サポートされていない -: 'str' および 'int' のオペランド型」を教えてくれるので、できる限りいじりましたが、これを理解していません。ストリップを介して 16 進数値の前にある 0x を削除することを考えていましたが、整数として読み込まれ、正しくありません。
最後に試したのは、line[ 0 ] と line[ 2 ] (ストリップ付き) を直接使用して endAddress を検索することでしたが、すべて同じエラーが発生します。startAddress = 0xFFFFFFFF を行 [ 0 ] に割り当てる前に、型を強制しようとしましたが、うまくいきませんでした。では、16 進数ではないのに 16 進数であると不平を言う場合、文字列を 16 進数に変換するにはどうすればよいでしょうか。それとも、それらを追加する方法が間違っているのでしょうか? 他の追加方法を使用できますか?
私にとっての最大の混乱は、startAddress を文字列に変換してから 16 進数に戻そうとしても、まだエラーが発生することです。