Javaでバイナリデータ(byte配列)から整数に変換する
追加ライブラリなどを使わずに、Javaでbyte配列から整数に変換する方法です。
バイナリデータを解析する際、ヘッダ部分にデータサイズが入っているなんて場合に使えます。
計算で変換する
short
など符号付の変換をしたい場合。
- 各byte値を上位の型(下記サンプルでは
short
)にキャスト - 符号部分をマスクする
- ビットシフト相当の値を掛ける
- すべての値を加算
ログの出力
short型の場合
文字列と数値の変換を使う
符号なし(unsigned short
など)の場合。16進表記の文字列に変換→16進数の文字列を整数にする方法です。
文字列の16進表記は正の値とみなされます。つまりunsigned
になります。
ログの出力
unsigned int
には対応できません。
符号なし変換について
Java 8からは符号なし変換(Byte.toUnsignedInt()
など)でキャストも不要です。unsigned int
も扱えます。
しかし、Android StudioではAPI level 26
以上しか使えません。
アプリ開発で使うにはまだまだ早いかな、と。