我想在文本区域中取一个二进制文件并将其转换为十六进制。使用计算器计算时,结果为“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]));
}
有人能指出我哪里出错吗?
答案 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);