ホームページ >Java >&#&チュートリアル >Java で符号なしバイトを表現および操作するにはどうすればよいですか?
Java での符号なしバイトの表現
Java では、byte などのプリミティブ データ型は本質的に署名されており、正の値と負の値の両方を表すことができます。 。ただし、負でない値のみを許可する符号なしバイトとして表されるデータを処理する必要がある状況が考えられます。
変換の課題
次の場合の 1 つの課題Java での符号なしバイトの処理は、Java コンパイラが -128 ~ 127 の範囲内の符号付きバイト値を解釈することです。バイト変数に 127 を指定すると、符号拡張により負の値になります。
解決策: 明示的な型キャスト
Java で符号なしバイトを処理するには、明示的に型キャストできます。キャスト演算子 (int) を使用して、符号付きバイト値を整数に変換します。整数への変換を強制することで、実質的に符号拡張を削除し、ビットを符号なしの値として解釈します。
例:
byte b = (byte) 200; // -56 by Java specification, 200 by convention int unsignedByte = (int) b; // 200
ビットごとのマスキング
変換後、符号なしバイト値に対してビット単位の演算を実行する必要がある場合があります。符号拡張が再度表示されないようにするには、定数 0xFF を使用してビット単位の AND 演算を適用します。この操作により、最上位ビットがゼロで埋められ、符号なしバイト値が確実に保持されます。
例:
int unsignedByte = (int) b & 0xFF; // 200
符号なし値の使用
符号なしバイトを変換してマスクすると、それを計算に使用したり、符号なしバイトを期待するメソッド。符号拡張の問題を避けるために、元の符号付きバイトではなく、unsignedByte 変数に対してさらにビット単位の演算を実行することを忘れないでください。
要約すると、符号付きバイトを明示的に整数に型キャストし、ビット単位のマスキングを適用することで、効果的に表現および操作できるようになります。 Java の符号なしバイト。
以上がJava で符号なしバイトを表現および操作するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。