タイトルは少し誤解を招くものです。基本的に、私はいくつかの異なるフォーマットの巨大なリストにたくさんの数字を持っています. 値とその型が渡され、それらを展開して HEX 文字列に変換することが期待されます。
私の最近の試みは:
realVal = '0x%08x' % struct.unpack( evalType, ( rawVal ) )
realVal は、数値の実際の値である 16 進数であると想定されており、後で私のコードで使用されます。evalType は数値 rawVal のコード文字タイプであり、rawVal はバイナリ ファイルから直接取り出された生の値です。evalType は、辞書を参照して取得されます。しかし、値が浮動小数点数の場合は壊れますが、最初の 100K の場合、値が整数の場合は問題ありません。
そこで、最初に次のようにして値を整数に変換しようとしました。
realVal = '0x%08x' % int ( struct.unpack( evalType, ( rawVal ) ) )
しかし、エラーメッセージによると、明らかに struct.unpack( evalType, ( rawVal ) ) がタプルであるため、それは機能しません。
また、float から hex への変換は float.hex() で実行できることがわかったので、if ステートメントを追加して試します。
realVal = struct.unpack( evalType, ( rawVal ) ).hex()
値が浮動小数点数であることがわかっている場合、それは壊れて、タプルには .hex() 関数がないと言います。
タプルで作業していることがわかったので、内部の値が整数の場合に問題なく動作する理由と、フロートの場合にクラッシュする理由、およびそれを修正する方法を知りたいと思います。