-3

長さ 160 のバイナリ文字列を 20 バイトに変換しようとしています。バイト配列を取得するために BigInteger を使用しています。14 バイトしか返されません。20 バイトが必要です。

これが私のコードです:

BigInteger b = new BigInteger("0000000000000000000000000000000000000000000001010000000000000000000000000000010000010100001011111110000000000000000000000000000000000000000000000000000000000000", 2);
byte[] newData = b.toByteArray();
ByteArrayOutputStream output = new ByteArrayOutputStream(20);
for (int i = 0; i < 20 - newData.length; i++) {
    output.write((byte) 0x00);
}
output.write(newData);
newData = output.toByteArray();
4

1 に答える 1

1

すでにご存知かもしれませんが、20 バイトの配列を作成するには、次のようにします。

byte [] arr = new byte[20];

その後、必要な要素を手動で配置できます。

目的の結果が得られない理由は、BigInteger が先頭のゼロを削除しているためです。そのため、達成したい目的には適していない可能性があります。

文字列を使用してバイト配列を作成することもできます。

String s = "9B7D2C34A3623432DF30641E6CECF6F";    
byte[] bytes = Hex.decodeHex(s.toCharArray());

私には、これが配列を作成する最良の方法のように思えます。ちなみに、これは文字列の 16 進表現ではありません。自分で行うことができます

于 2013-07-06T00:32:24.737 に答える