我想在文本区域中取一个二进制并将其转换为十六进制。使用计算器计算时,结果是“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]));
}
谁能指出我哪里做错了?
最佳答案
你应该使用 Integer#parseInt(String s, int radix)以 2 为底解析二进制字符串,然后使用 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);
关于java - 从文本区域获取二进制文件,然后转换为十六进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14124556/