1

我想在文本区域中获取一个二进制文件并将其转换为十六进制。使用计算器计算时,结果为“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来获取十六进制字符串:

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 回答