c# byte[] → string → byte[] issue

本文关键字:byte issue string | 更新日期: 2023-09-27 18:12:10

我又一个奇怪的问题。

我有这样的代码:

byte[] chks = Get64bitData();
string str = Encoding.UTF8.GetString(chks);
byte[] bts = Encoding.UTF8.GetBytes(str); 

方法Get64bitData返回8字节数组,然后将数组转换为字符串。然后代码再次将字符串转换为字节数组,但是新数组现在具有16字节!

这是什么类型的地狱,如何避免它?

c# byte[] → string → byte[] issue

如您所见,任何随机字节[]都不能安全地转换为文本。使用转换。ToBase64StringBitConverter。ToString将字节数组转换为字符串。

byte[] chks = Get64bitData();
string str = Convert.ToBase64String(chks);
byte[] bts = Convert.FromBase64String(str);

或在 system . runtime . remoting_metadata . w3cxsd2001

使用SoapHexBinary
byte[] chks = Get64bitData();
string str = new SoapHexBinary(chks).ToString();
byte[] bts = SoapHexBinary.Parse(str).Value;