我是java的新手.我有一个逐行的十六进制值的文本文档,我试图读取它并将其转换为字节数组.但对于像8,d,11,0,解析即时得到错误的值对于E4为-28而不是228时E4的十六进制值我怎样才能克服这个转换错误....
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;
Run Code Online (Sandbox Code Playgroud)
字节(和所有其他整数类型)都签署了在Java中,不无符号.
如果您只是将字节视为字节数组,那么某些值为负数并不重要,它们的位表示仍然正确.
您可以通过屏蔽与所述字节值得到"正确"的无符号数int的值0xff,但所得到的值itselt将是一个int太:
int n = (myByte & 0xff);
Run Code Online (Sandbox Code Playgroud)