在Java中编码base64并在C中解码
目录
在Java中编码base64并在C#中解码
问题概述:
java和c#之间遇到base64问题,我从java urlconnection将编码字符串发送到asp.net处理程序,我比较两个字符串,一个在java中从字节数组生成的字符串和一个在asp.net第一次解码中接收的字符串,两者都有是相同的,但在解码 c# 中的字节数组后与 java 中的字节数组不相等。
问题原因:
我正在使用新的 sun.misc.BASE64Encoder().encode(javabytearray);
在 java 和 System.Convert.FromBase64String(encodedstring);
来自java:“[0] [-24] [56] [1] [-56] [41] [-29] …”
到 dotnet:“[0] [232] [56] [1] [200] [41] [227] …”
类似:Java 中的 base64 编码和 C# 中的解码
解决方案:
byte 在 C# 中是无符号的,在 Java 中是有符号的。Java字节值-24的位模式等于c#字节值232的位模式。所以你的代码应该是正确的。如果您想验证这一点,请将 Java 字节值转换为 int 并将 256 添加到负值。