从文本区域取二进制,然后转换为Hexa

时间:2013-01-02 15:26:40

标签: java

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

有人能指出我哪里出错吗?

1 个答案:

答案 0 :(得分:3)

您应该使用Integer#parseInt(String s, int radix)和base 2来解析二进制字符串,然后使用toHexString来获取Hex字符串:

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);