Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Base64字符串在C#和Android中有所不同_C#_Android - Fatal编程技术网

为什么Base64字符串在C#和Android中有所不同

为什么Base64字符串在C#和Android中有所不同,c#,android,C#,Android,我已经将一个图像转换成base64字符串,并输出与在线网站相同的内容 但是当我从Android上转换相同的图像时,它是不同的 你能解释一下为什么C#和Android base64字符串对于同一个图像是不同的吗 C#.NET代码 安卓代码 Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(), R.drawable.image); ByteArrayOutputStream bao = new ByteArrayOutput

我已经将一个图像转换成base64字符串,并输出与在线网站相同的内容

但是当我从Android上转换相同的图像时,它是不同的

你能解释一下为什么C#和Android base64字符串对于同一个图像是不同的吗

C#.NET代码

安卓代码

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),  R.drawable.image);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 100, bao);
byte [] ba = bao.toByteArray();
 String ba1=Base64.encodeToString(ba,Base64.DEFAULT);
两个映像base64都不同


请帮帮我。

base 64有许多变体,包括行长、填充、校验和等。有一个很好的变体表

我猜C#和Android只是使用了不同的变体

编辑根据您更新的帖子,还有其他几种可能性:

  • Android在将.jpg文件打包为资源时可能正在修改该文件(然而,尽管资源打包程序在压缩方面非常激进,但情况可能并非如此)
  • Android可能会以与原始图像不同的方式重新编码图像(两个.jpg文件可以表示相同的像素值,并且不是逐字节相同)

更好的测试是跳过(在Android代码中)从资源到
位图的转换,然后返回到.jpg编码。只需以流的形式打开资源,将其直接读入字节数组,然后在base 64中对其进行编码。

base 64有许多变体,包括行长、填充、校验和等。有一个很好的变体表

我猜C#和Android只是使用了不同的变体

编辑根据您更新的帖子,还有其他几种可能性:

  • Android在将.jpg文件打包为资源时可能正在修改该文件(然而,尽管资源打包程序在压缩方面非常激进,但情况可能并非如此)
  • Android可能会以与原始图像不同的方式重新编码图像(两个.jpg文件可以表示相同的像素值,并且不是逐字节相同)
更好的测试是跳过(在Android代码中)从资源到
位图的转换,然后返回到.jpg编码。只需以流的形式打开资源,将其直接读入字节数组,并在Base64中对其进行编码

Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),  R.drawable.image);
ByteArrayOutputStream bao = new ByteArrayOutputStream();
bitmapOrg.compress(Bitmap.CompressFormat.JPEG, 100, bao);
byte [] ba = bao.toByteArray();
 String ba1=Base64.encodeToString(ba,Base64.DEFAULT);