文字列「00」またはバイト0x00をバイト配列の先頭に追加する必要がありますか?forループで実行しようとしましたが、16進数に変換すると、前面に表示されません。
質問する
6203 次
1 に答える
6
文字列「00」は、バイトに変換されたときの数値0x00とは異なります。バイト配列に追加しようとしているデータ型は何ですか?文字列「00」のバイト表現であると仮定して、次のことを試してください。
bytes[] orig = <your byte array>;
String prepend = "00";
bytes[] prependBytes = prepend.getBytes();
bytes[] output = new Bytes[prependBytes.length + orig.length];
for(i=0;i<prependBytes.length;i++){
output[i] = prependBytes[i];
}
for(i=prependBytes.length;i<(orig.length+prepend.lenth);i++){
output[i] = orig[i];
}
または、前述の2つのforループの代わりにArrays.copy(...)を使用して、先頭に追加することもできます。2バイト配列を組み合わせる方法を参照してください
または、バイト配列の前に文字通り0を追加しようとしている場合は、次の方法でデカラリングprependBytes
し、同じアルゴリズムを使用します。
byte[] prependBytes = new byte[]{0,0};
また、バイト配列を16進数に変換していると言うと、先行ゼロが切り捨てられる可能性があります。これをテストするには、次の先頭に追加して16進数に変換し、別の出力があるかどうかを確認してください。
byte[] prependBytes = new byte[]{1,1};
必要な先行ゼロを削除する場合は、16進数を文字列に変換してフォーマットすることをお勧めします。
于 2012-07-04T03:52:39.110 に答える