Javaで符号なしバイトを操作するための完全なガイド:
(この回答の出典。)
Java言語は、unsigned
キーワードのようなものを提供しません。A byte
場合、例えば127 -言語仕様に応じては、-128の間の値を表しているbyte
にキャストされint
たJava符号及び使用、第1のビットを解釈する符号拡張。
とはいえ、byte
単に8ビットとして表示して、それらのビットを0〜255の値として解釈することを妨げるものは何もありません。他の誰かの方法に解釈を強制する方法はないことに注意してください。メソッドがを受け入れる場合、byte
そのメソッドは、特に明記されていない限り、-128〜127の値を受け入れます。
以下に、便利な変換/操作をいくつか示します。
intとの変換
// From int to unsigned byte
int i = 200; // some value between 0 and 255
byte b = (byte) i; // 8 bits representing that value
// From unsigned byte to int
byte b = 123; // 8 bits representing a value between 0 and 255
int i = b & 0xFF; // an int representing the same value
(または、Java 8以降を使用している場合は、を使用してくださいByte.toUnsignedInt
。)
解析/フォーマット
最善の方法は、上記の変換を使用することです。
// Parse an unsigned byte
byte b = (byte) Integer.parseInt("200");
// Print an unsigned byte
System.out.println("Value of my unsigned byte: " + (b & 0xFF));
算数
2補数表現は、加算、減算、および乗算に対して「機能する」だけです。
// two unsigned bytes
byte b1 = (byte) 200;
byte b2 = (byte) 15;
byte sum = (byte) (b1 + b2); // 215
byte diff = (byte) (b1 - b2); // 185
byte prod = (byte) (b2 * b2); // 225
除算には、オペランドの手動変換が必要です。
byte ratio = (byte) ((b1 & 0xFF) / (b2 & 0xFF));