1

テキスト領域でバイナリを取得し、16 進数に変換したいと考えています。電卓で計算すると、結果は「E0AC882AA428B6B8」ですが、私のコードでは「30」です。

String str = txtXOR.getText();
char[] chars = str.toCharArray();

StringBuffer hex = new StringBuffer();
int x = chars.length;

for(int i = 0; i < x; i++){
  hex.append(Integer.toHexString((int)chars[i]));
  txtXORToHexa.setText(Integer.toHexString((int) chars[i]));
}

誰かが私が間違っている場所を指摘できますか?

4

1 に答える 1

3

基数 2 でInteger#parseInt(String s, int radix)を使用してバイナリ文字列を解析し、次に使用toHexStringして 16 進文字列を取得する必要があります。

String binaryStr = txtXOR.getText();
int number = Integer.parseInt(binaryStr, 2);
String hexStr = Integer.toHexString(number);
txtXORToHexa.setText(hexStr);

非常に大きな数をサポートする必要がある場合は、BigIntegerを使用できます。

String binaryStr = txtXOR.getText();
BigInteger number = new BigInteger(binaryStr, 2);
String hexStr = number.toString(16);
txtXORToHexa.setText(hexStr);
于 2013-01-02T15:31:25.980 に答える