Base64 C#和Java之间的区别

zho*_*ang 4 c# java base64

image 是图像文件的字符串.

我在C#中有如下代码:

Convert.ToBase64String(image);

和Java中的代码如下: org.apache.commons.codec.binary.Base64.encodeBase64(image.getBytes())

结果是不同的.

有人说是因为

  • Java字节:-128到127

  • C#字节:0到255

但我该如何解决这个问题呢?如何Convert.ToBase64String()在Java中实现C#?我需要使用Java在C#中获得相同的结果.

Pet*_*rey 6

首先,您需要意识到一个字节存储256个值,无论是有符号还是无符号.如果要从签名字节(Java支持的)中获取无符号值,可以使用& 0xFF

例如

byte[] bytes = { 0, 127, -128, -1};
for(byte b: bytes) {
  int unsigned = b & 0xFF;
  System.out.println(unsigned);
}
Run Code Online (Sandbox Code Playgroud)

版画

0
127
128
255
Run Code Online (Sandbox Code Playgroud)

简单的答案是你不需要一个具有相同值的byte [].;)