c# – byte []到字符串到字节数组转换在java中不能正常工作

我有一个像这样初始化的字节数组:

public static byte[] tmpIV =  {0x43, (byte)0x6d, 0x22, (byte)0x9a, 0x22,
                         (byte)0xf8, (byte)0xcf, (byte)0xfe, 0x15, 0x21,
                         (byte)0x0b, 0x38, 0x01, (byte)0xa7, (byte)0xfc, 0x0e};

如果我打印它给我

67   109    34      -102       34     -8          -49      -2      21      33
11    56    1       -89       -4      14

然后我将整个字节数组转换为字符串并发送给我的朋友.

String str = new String(tmpIV);

我的朋友是C#程序员

所以我的朋友得到了一些其他数据.我的朋友将如何获得与我发送的数据相同的数据.
另外在Java中如果我将上面的字符串重新转换为字节数组,我没有得到我发送的确切字符串:

 67     109        34        -17        -65      -67      34       -17     -65       -67
-17     -65        -67        -17         -65    -67      21       33    11     56      1
-17      -65      -67         -17       -65       -67   
最佳答案
问题是您已将字节数组转换为平台默认编码中的字符串.

如果这是任意二进制数据(它似乎是),那么你不应该使用任何普通的字符编码将其转换为字符串 – 而是使用base64.

使用Java中的base64并不是特别容易(因为它不在标准库AFAIK中),但是您可以使用各种第三方库,例如the one in the Apache Commons Codec library.

在C#方面它会更容易 – 只需使用:

byte[] data = Convert.FromBase64String(text);

转载注明原文:c# – byte []到字符串到字节数组转换在java中不能正常工作 - 代码日志