/ Javaで整数を表す文字列を符号なしバイト配列に変換する方法 - java、bytearray、byte、符号なし

変換する方法整数を表す文字列をJavaの符号なしバイト配列に変換するには? - java、bytearray、byte、unsigned

基本的に、私が欲しいのはのような文字列を変換することです "123456" 符号なしバイト配列へ [1, 226, 64]。しかし、私は至る所で見て、私が見つけたものは2の補数(符号付き)バイト配列を得ることです [1, -30, 64]

byte[] array = new BigInteger("123456").toByteArray();
System.out.println(Arrays.toString(array));

出力:

[1, -30, 64]

それでは、どうやってそれをJavaで行うことができるのでしょうか。出力を次のようにします。

[1, 226, 64]

編集: byteは127までしか保持できないことがわかっているので、byte配列の代わりにint配列にする必要があります。

回答:

回答№1は4

Javaには符号なし型がないため、値をint配列に格納する必要があります。

byte[] array = new BigInteger("123456").toByteArray();
int[] unsigned_array = new int[array.length];
for (int i = 0; i < array.length; i++) {
unsigned_array[i] = array[i] >= 0 ? array[i] : array[i] + 256;
}

かなり簡単です。


回答№2については2

Javaは符号なしバイトを持っていないので、それらを符号なしであるかのようにintに変換するには、それらをビットごとにANDする必要があります(&int付き) 0xFF

byte[] array = new BigInteger("123456").toByteArray();
for (int i = 0; i < array.length; i++) {
System.out.println(0xFF & array[i]);
}

出力:

1
226
64

あなたは必ずしも必要ではない 格納 int配列としてそれらを - それはあなたが彼らと何をしたいのかに依存します...