c#中byte数组0x_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);

标签:java,c-2,byte

来源: https://codeday.me/bug/20190726/1547996.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值