teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追記

2017/12/09 15:30

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  > 読み込んだbyteデータをリトルエンディアンで扱うための方法
13
13
 
14
- ByteBufferを使ったらどうでしょうか?こんな感じ。
14
+ 必ず2バイトずつ読み込むのであれば、逐次それをひっくり返すだけでもいいような気はしますが、敢えて何かしらJavaの機能を用いるのならByteBufferを使ったらどうでしょうか?こんな感じ。
15
15
 
16
16
  ```Java
17
17
  ByteBuffer buf = ByteBuffer.wrap(b_first);

2

裏返しか

2017/12/09 15:30

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  ```Java
6
6
  × System.out.printf( "%04X", read_first );
7
- ○ System.out.printf( "%02X%02X", b_first[0], b_first[1] );
7
+ ○ System.out.printf( "%02X%02X", b_first[1], b_first[0] );
8
8
  ```
9
9
 
10
10
  2回目のreadでは、b_secondには次の2バイトが入っているはずです。

1

修正

2017/12/09 14:31

投稿

keicha_hrs
keicha_hrs

スコア6768

answer CHANGED
@@ -1,7 +1,14 @@
1
1
  > 「2byte読み込んだら次の2byteを読み込む」ための処理のコード
2
2
 
3
- readメソッドを使ったときに読み込まれたデータが格納されるのは引数に指定したbyte配列の方であり、戻り値はreadメソッドで読み込めたバイト数が返ります。その取り扱いを勘違いしているだけでは。2回目のb_secondへの格納は、次の2バイトが入っているはずです。
3
+ readメソッドを使ったときに読み込まれたデータが格納されるのは引数に指定したbyte配列であるb_firstの方であり、戻り値はreadメソッドで読み込めたバイト数が返ります。その取り扱いを勘違いしているだけでは。
4
4
 
5
+ ```Java
6
+ × System.out.printf( "%04X", read_first );
7
+ ○ System.out.printf( "%02X%02X", b_first[0], b_first[1] );
8
+ ```
9
+
10
+ 2回目のreadでは、b_secondには次の2バイトが入っているはずです。
11
+
5
12
  > 読み込んだbyteデータをリトルエンディアンで扱うための方法
6
13
 
7
14
  ByteBufferを使ったらどうでしょうか?こんな感じ。