0

私は少しjavaを学び始めて、おそらく非常に単純なタスクを達成しようとしていますが、私はそれに苦労しています。

私がバイト配列を持っているとしましょう:

byte[] test = {(byte) 0x0a, (byte) 0x01, (byte) 0x01, (byte) 0x0b};

そして、test [3](現在は数値11(0b)である最後の値)をランダムなものに変更したいと思います。

Random generator = new Random();

int newTest3 = generator.nextInt(255);

これで、newTest3に乱数があります。これを16進数(FF)に変換してから、テストの最後の要素、つまりtest[3]に配置します。

私はこれについて私を助けるために多くを見つけることができませんでした、そして私は文字通り数時間前にジャバを拾いました、それでどんな助けも素晴らしいでしょう!

前もって感謝します :)

4

2 に答える 2

3

なぜそんなに苦労するのかわかりません。次のように書くときは、すでに行っているように明示的なキャストを使用してください:):

byte[] test = {(byte) 0x0a, (byte) 0x01, (byte) 0x01, (byte) 0x0b};

0x0a は実際には、明示的にバイトにキャストする int です。newTest3 でも同じことができます。

test[3] = (byte)  newTest3;

byte はわずか 8 ビットで、int は 32 ビットであるため、この種のキャストでは通常、データが失われることに注意してください。たとえば (FFFFFFFF は FF にキャストされます)。

于 2012-05-15T22:54:42.063 に答える
2

バイトバッファを使用する

// elsewhere
import java.nio.ByteBuffer;

byte[] arr = new byte[4];
ByteBuffer buf = ByteBuffer.wrap(arr);
buf.putInt(generator.nextInt(255);
于 2012-05-15T22:50:47.023 に答える