1. ホーム

[解決済み】Javaでunsigned byteを作ることはできますか?

2022-04-14 11:41:26

質問

符号付きバイトを符号なしに変換しようとしています。問題は、私が受け取っているデータが符号なしであり、Javaが符号なしバイトをサポートしていないため、データを読み取るときに符号付きとして扱われることです。

Stack Overflowから得た以下の解決策で変換を試みました。

public static int unsignedToBytes(byte a)
{
    int b = a & 0xFF;
    return b;
}

しかし、再びbyteで変換すると、同じ符号付きのデータが得られます。私はこのデータを、バイトしかパラメータとして受け入れないJavaの関数のパラメータとして使おうとしているので、他のデータ型は使えません。どうしたらこの問題を解決できますか?

解決方法を教えてください。

ご質問の意味がよくわからないのですが。

今試してみたところ、バイト-12(符号付き値)に対して、整数244(符号なしバイト値と同等だが、タイプは int ):

  public static int unsignedToBytes(byte b) {
    return b & 0xFF;
  }

  public static void main(String[] args) {
    System.out.println(unsignedToBytes((byte) -12));
  }

やりたいことなのか?

Javaでは、244を表すのに byte を超える正の整数を表現するには、C言語と同じように Byte.MAX_VALUE (127) のように、別の積分型を使用する必要があります。 short , int または long .