【发布时间】:2015-10-01 06:41:31
【问题描述】:
我在让我的代码读取具有 4 个十六进制代码的某个文件时遇到很多麻烦,使用缓冲区读取器并将其转换为十进制。我能够让 bufferreader 读取文本文件并将其输出到编译器,但我需要程序来存储 4 个值并让我的方法将十六进制转换为十进制。这是我到目前为止所拥有的:
import java.io.BufferedReader;
import static java.lang.System.*;
import java.io.*;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class HexToDecimal {
public static int hexToDecimal(String hexInput) throws IOException {
int decimal = 0;
int len = hexInput.length();
FileReader in = new FileReader("results.txt");
BufferedReader br = new BufferedReader(in);
String line;
while ((line = br.readLine()) != null) {
out.printf(line + "\n");
}
in.close();
for (int i = 0; i < len; ++i) {
char c = hexInput.charAt(i);
int cValue;
switch (c) {
case '1':
cValue = 1;
break;
case '2':
cValue = 2;
break;
case '3':
cValue = 3;
break;
case '4':
cValue = 4;
break;
case '5':
cValue = 5;
break;
case '6':
cValue = 6;
break;
case '7':
cValue = 7;
break;
case '8':
cValue = 8;
break;
case '9':
cValue = 9;
break;
case 'A':
cValue = 10;
break;
case 'B':
cValue = 11;
break;
case 'C':
cValue = 12;
break;
case 'D':
cValue = 13;
break;
case 'E':
cValue = 14;
break;
case 'F':
cValue = 15;
break;
default: // unexpected character
throw new IllegalArgumentException("Non-hex character " + c
+ " found at position " + i);
}
decimal = 16 * decimal + cValue;
}
return decimal;
}
public static void main(String[] args) {
}
}
我也不能使用 parseInt 这就是我使用大小写分隔符的原因。在将十六进制转换为十进制时,这也给我带来了麻烦。非常感谢任何帮助。
【问题讨论】:
-
什么给你带来麻烦?
-
请同时添加一个可能的输入字符串示例。以及异常情况下的堆栈跟踪。你的
main真的是空的吗?? -
我会使用十六进制 A2,它应该给我 162,但是当我写 System.out.println ('A' + '2'); 时我一直得到 115;只是这样我就可以测试案例中断计算。给我带来麻烦的是试图让程序将文本文件中的十六进制转换为十进制。我不知道如何存储文本文件的值并让我的案例刹车将其转换为十进制。
-
'A' + '2'是字符而不是字符串,而是使用"A"+"2"。 -
我得到的输出实际上是 A2
标签: java bufferedreader filereader