Android 图片转十六进制字符串出现数据不对

使用

 File file = new File(imagepath);
 FileInputStream fs = new FileInputStream(file);
 byte[] buffer = new byte[fs.available()];
 fs.read(buffer);
 String hexStr = bytes2HexStr(buffer);//byte数组转换成16进制编码的字符串
 System.out.println(hexStr);
 static String bytes2HexStr(byte[] byteArr) {
     String hexString = "0123456789ABCDEF";
     StringBuilder sb = new StringBuilder(byteArr.length*2);
     for(int i=0;i<byteArr.length;i++)
     {
            sb.append(hexString.charAt((byteArr[i]&0xf0)>>4));
            sb.append(hexString.charAt((byteArr[i]&0x0f)>>0));
     }
     return sb.toString();
 }

获取的jpg图片的十六进制字符串在标记位置后,与用UE在PC上显示的数据不一样。

请问是什么情况? 有什么解决办法?

除去名字等信息不同以外,在后面的数据中也出现了很多不一样的地方。

/**

  • 将图片转换成十六进制字符串
  • @param photo
  • @return */ public static String sendPhoto(ImageView photo) { Drawable d = photo.getDrawable(); Bitmap bitmap=((BitmapDrawable)d).getBitmap(); ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);// (0 - 100)压缩文件 byte[] bt = stream.toByteArray(); String photoStr = byte2hex(bt); return photoStr;

}

调试下fs.available()这里的长度是文件的长度么
imagepath和你作为对比的那个文件是一个文件么?特别注意路径是否相同

呃,用了Android端和PC机上都用相同名字的文件之后,发现是一模一样的。。。所以此问题可以终结了