【发布时间】:2012-12-01 03:12:18
【问题描述】:
我是 java 新手。我有一个逐行包含十六进制值的文本文档,我正在尝试读取它并将其转换为字节数组。但是对于像 8, d, 11, 0, e4 这样的十六进制值,在解析时我得到错误的 e4 值是 -28 而不是 228。 我怎样才能克服这个转换错误....
FileInputStream fstream = new FileInputStream("C:/Users/data.txt");
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(newInputStreamReader(in,"UTF-8"));
byte[] bytes = new byte[1024];
String str;
int i=0;
while ((str = br.readLine()) != null)
{
bytes[i]= (byte) (Integer.parseInt(str,16) & 0xFF);
i++;
}
byte[] destination = new byte[i];
System.arraycopy(bytes, 0, destination, 0, i);
br.close();
return destination;
【问题讨论】:
-
Java 中的字节已签名。它的范围是-
[-128, 127],127之后的值是负数。因此228是-28。 -
请不要使用DataInputStream读取文本vanillajava.blogspot.co.uk/2012/08/…