问题描述
在java和c#之间存在base64问题,将java编码字符串发送到一个java urlconnection的asp.net处理程序,我比较两个字符串,一个是从byte数组生成的,另一个是在asp中.net第一个解码并且都是相同的,但是在解码后,c#中的字节数组不等于java中的字节数组。
我使用新的sun.misc.BASE64Encoder()。encode(javabytearray);在java和System.Convert.FromBase64String(encodedstring);在dotnet。
from java:[0] [-24] [56] [1] [-56] [41] [-29] ........
to dotnet:[0] [232] [56] [1] [200] [41] [227] .........
类似的:
我不能问上述问题,因为它是一个Q&A的网站,每当一个新的问题必须创建,不能在另一个问题内提出问题。
非常感谢
Im having problems whith base64 between java and c#, im sending encoded string to a asp.net handler from an java urlconnection, i compare both strings, the one generated in java from byte array and the one received in asp.net first decoding and both are identical but after decode the byte array in c# arent equal from byte array in java.Im using new sun.misc.BASE64Encoder().encode(javabytearray); in java and System.Convert.FromBase64String(encodedstring); in dotnet.
from java: "[0] [-24] [56] [1] [-56] [41] [-29] ........."
to dotnet: "[0] [232] [56] [1] [200] [41] [227] ........."
Similar: Encoding base64 in Java and decoding in C#
i cant ask it in question above because it is an Q&A site and every time an new question must be created, cant ask an question inside another question.
thanks a lot
推荐答案
byte
在C#中未签名,并用Java签名。 Java 字节
值 -24
的位模式等于c# byte value 232
。所以你的代码应该是正确的。如果你想验证这一点,转换例如将$ 字节
值转换为 int
并将 256
添加到负值。
byte
is unsigned in C# and signed in Java. The bit pattern of the Java byte
value -24
is equal to the bit pattern of the c# byte
value 232
. So your code should be correct. If you want to verify this, convert e.g. the Java byte
values to int
and add 256
to the negative values.
这篇关于在Java中编码base64并在C#中解码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!