3

文字列「00」またはバイト0x00をバイト配列の先頭に追加する必要がありますか?forループで実行しようとしましたが、16進数に変換すると、前面に表示されません。

4

1 に答える 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 に答える