0

Visual C ++のReadInt16()と同じ関数を持つJavaのメソッドはありますか?数値データが16ビット形式で保存されているバイナリファイルを読み取る必要があります。

4

5 に答える 5

5

java.io.InputStream から読み込んでいる場合は、おそらく次のようなものが必要です。

DataInputStream dataInputStream = new DataInputStream(inputStream);
short myInt16 = dataInputStream.readShort();
于 2012-06-21T12:12:14.380 に答える
2

いいえ、Javaのintは32ビットに固定されています。ただし、shortは16ビットです。多分あなたはそれを使うことができます。

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

あなたはあなたの側でいくつかの仕事をしなければならないように聞こえます。

于 2012-06-21T12:08:35.370 に答える
0

RandomAccessRreadInt16()メソッドを試すことができます。

于 2012-06-21T12:09:45.657 に答える
0

特に c/c++ を使用している場合は、バイナリ数値データの読み取りに使用ByteBufferすることをお勧めします。これは、Java のデフォルトのバイト順がビッグ エンディアンであるのに対し、c/c++ ではリトルエンディアンであるためです。

byte[] bin_data = {0x01, 0x02, 0x03, 0x04};
ByteBuffer bb = ByteBuffer.wrap (bin_data);
bb.order (ByteOrder.LITTLE_ENDIAN);
System.out.println (String.format("0x%04X", bb.getShort ());  // 0x0201
System.out.println (String.format("0x%04X", bb.getShort ());  // 0x0403
于 2012-06-21T12:22:40.173 に答える
0

Java はデフォルトでビッグエンディアンを使用することに注意してください。多くの MS ベースのシステムはリトル エンディアンを使用するため、代わりに ByteBuffer を使用することをお勧めします。

2 GB 未満のファイルに対してこれを行う簡単な方法は、ファイルをメモリ マップし、order(ByteOrder.LITTLE_ENDIAN) を使用することです。また、position(pos) を使用してこのファイルにランダムにアクセスすることもできます。

于 2012-06-21T12:19:34.923 に答える