回答編集履歴
1
補記
test
CHANGED
@@ -41,3 +41,25 @@
|
|
41
41
|
誤:`short n1 = (short) ((data1[i + 1] << 8) + data1[i]);`
|
42
42
|
|
43
43
|
正:`short n1 = (short) ((data1[i + 1] << 8) + (data1[i] & 0xFF));`
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
---
|
48
|
+
|
49
|
+
補記: 問題の原因とは関係なく結果は間違ってませんが効率上の指摘を1点。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
合成後のサンプルデータ(short型)をbyteへ分解する演算ですが、ご質問のコードでは16進数4桁のStringへ変換してその前後の2文字を16進数整数としてパースする方法を採っておられます。しかしその方法よりも整数演算を用いた方が効率的です。Stringのインスタンスを生成しないことでヒープの消費もありませんし、処理自体のスピードもずっと速いです。
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
```java
|
58
|
+
|
59
|
+
short n = ...;
|
60
|
+
|
61
|
+
data[i] = (byte)n;
|
62
|
+
|
63
|
+
data[i] = (byte)(n >> 8);
|
64
|
+
|
65
|
+
```
|