バイナリ ファイルを読み取る既存の Python アプリを変更しています。ファイルの形式が少し変更されています。現在、1 つのフィールドはレコードのバイト 35 から 36 として定義されています。仕様には、「...レコード内のフィールドは、ASCII で記述された文字フィールドになる」とも記載されています。現在の作業コードは次のようになります。
def to_i16( word ):
xx = struct.unpack( '2c', word )
xx = ( ord( xx[ 0 ] ) << 8 ) + ord( xx[ 1 ] )
return xx
val = to_i16( reg[ 34:36 ] )
しかし、そのフィールドはバイト 35 ~ 37 として再定義されているため、24 ビット値になります。私はバイナリファイルを扱うのが大嫌いで、ちょっといじるのが苦手です。その 3 バイト値を 24 ビット整数に変換するにはどうすればよいですか?? グーグルで見つけたいくつかのコードビットを試しましたが、それらが正しいとは思いません。サンプルの「新しいフォーマット」ファイルを送ってくれた人々から、私が考えるべき値を示すテキスト表現を送ってくれるのをまだ待っているので、確信が持てません。