バイト配列をループする際に問題が発生していました。基本的には、2つのネストされたforループがあります。外側のものは256回ループし、内側のものはバイト配列の最初の8バイトに対してループします。私がやろうとしています何Javaでバイト配列がすべて0であるかどうかを調べる方法
outerloop:
for (int i = 0; i < 256; i++){
// code
byte [] first8bytes = Arrays.copyOfRange(byteArray, 0, 8);
for(int k = 0; k < first8bytes.length; k++){
if(k != 0){
}else{
System.out.println(Arrays.toString(first8bytes));
break outerloop;
}
}
}
はfirst8bytesが、そのうちの一つがゼロでない場合、私は戻って外側ループに移動しますすべて0であるかどうかを確認することです。しかし、これを行うことで、最初の8バイトを出力しようとすると、結果は[-26、0、-28、-49,64,45,66,66]になります。
私は打ち切る前にすべての0のfirst8bytesを取得しようとしています。私は何かが本当に私のロジックに間違っていることを知っていますが、私はそれを修正する方法は考えていません。
ありがとうございます!
は、私はそれを行うだろう方法です
boolean all0 = true;
for (int i = 0; i < 256; i++){
byte [] first8bytes = Arrays.copyOfRange(byteArray, 0, 8);
for(int k = 0; k < first8bytes.length && all0; ++k){
if(first8bytes[k] != 0) all0 = false;
}
if(all0){
System.out.println(Arrays.toString(first8bytes));
break;
}}
とすぐに、あなたは配列を印刷0である1つのバイトを見つけて。あなたの例では、2番目のバイトは0 ... – John3136
ですが、どうすれば修正できますか?私はロジックが間違っていることを知っている、私はそれを試すためにブール変数を追加しましたが、同じ結果になります – hyperfkcb
本当にあなたは 'byteArray'の同じ8バイトを256回チェックしようとしていますか?あなたは外側のループを通して毎回 'byteArray'の異なる範囲を選択したくないのですか?今はあなたが求めていることを理解するのに本当に苦労しています。 – Gray