我在读取是二进制的文件时读出来的数据和文件的不一样,不知道是什么原因 File file = new File(dir);
int size = (int) file.length();
byte[] buf = new byte[size];
fis = new FileInputStream(file);
//dis = new DataInputStream(fis);
while(fis.read(buf) != -1)
{
}
for(int i =0;i< 32;i ++)
{
Log.d("data"+i,""+buf[i]);
}本来源文件的二进制数据是 1 128 0 51 170 99 42 20....
但读出来的数据是 1 -128 0 51 -86 99 42 20....为什么出现这种情况?有什么办法解决?
int size = (int) file.length();
byte[] buf = new byte[size];
fis = new FileInputStream(file);
//dis = new DataInputStream(fis);
while(fis.read(buf) != -1)
{
}
for(int i =0;i< 32;i ++)
{
Log.d("data"+i,""+buf[i]);
}本来源文件的二进制数据是 1 128 0 51 170 99 42 20....
但读出来的数据是 1 -128 0 51 -86 99 42 20....为什么出现这种情况?有什么办法解决?
或者直接将buf 转成char型也可以,char是两个字节的。
sbyte的下半个值域-128~-1,与ubyte的上半个值域128~255,是一一对应的,sbyte的-128对应于ubyte的128,sbyte的-1对应于ubyte的255,依此类推
sbyte的上半个值域0~127,与ubyte的下半个值域0~127,同样一一对应,这个显然知道整数的二进制补码表示后,这个问题就是显然的