我有一个像这样初始化的字节数组:
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};
Run Code Online (Sandbox Code Playgroud)
如果我打印它给我
67 109 34 -102 34 -8 -49 -2 21 33
11 56 1 -89 -4 14
Run Code Online (Sandbox Code Playgroud)
然后我将整个字节数组转换为字符串并发送给我的朋友.
String str = new String(tmpIV);
Run Code Online (Sandbox Code Playgroud)
我的朋友是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
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 12
问题是您已将字节数组转换为平台默认编码中的字符串.
如果这是任意二进制数据(它似乎是),那么你不应该使用任何普通的字符编码将其转换为字符串 - 而是使用base64.
使用Java中的base64并不是特别容易(因为它不在标准库AFAIK中),但是您可以使用各种第三方库,例如Apache Commons Codec库中的库.
在C#方面它会更容易 - 只需使用:
byte[] data = Convert.FromBase64String(text);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3705 次 |
最近记录: |