1

既知のレイアウトのデータ構造を含むバイト配列をオブジェクトに「キャスト」する簡単な方法があるかどうか知りたいです。byte[] は、BCD パックされた値、1 または 2 バイトの整数値、および文字値で構成されます。を含むファイルを読み取ることで byte[] を取得していますFileInputStream

IBM メインフレーム システムで作業したことがある人は、私が言いたいことをすぐに理解するでしょう。問題は、Java でも同じことをしなければならないことです。

どんな提案でも大歓迎です。

4

2 に答える 2

2

いいえ、オブジェクトのレイアウトは、使用している VM やコードが実行されているアーキテクチャなどによって異なる可能性があるためです。

メモリ内表現に依存することは、私にとって常にもろく感じられました...

ご覧になることをお勧めしますDataInputStream- それがあなたのデータを解析する最も簡単な方法になると思います。

于 2011-02-10T12:04:49.103 に答える
1

すぐにではありませんが、バイトが何を表しているかを正確に知っていれば、非常に簡単に記述できます。

BCD パックされた数値を変換するには、エンコードされた 2 桁を抽出する必要があります。下位 4 ビットは最下位桁をエンコードし、15 (1111 バイナリ) で & することによって取得します。上位 4 ビットは、右に 4 ビットシフトし、15 で & することによって得られる最上位桁をエンコードします。

また、これが実際に行っていることである場合、IBM はツールを利用できる可能性が高いことに注意してください。IBM i については、jt400 IBM Toolbox for Java を探してください。

于 2011-02-10T12:10:03.693 に答える