在C#中将字节数组转换为字符串,反之亦然

时间:2018-06-18 12:57:21

标签: c#

我想将字节数组转换为字符串,然后将其转换为字节数组。我的代码是:

byte[] data = { 250, 15, 1, 220, 127 };
var s = Encoding.Unicode.GetString(data);
var b = Encoding.Unicode.GetBytes(s);

但是,运行代码后数据和b不相等,我也尝试过UTF7,UTF8,UTF32和ASCII编码。他们都没有正常工作。唯一可行的选项是默认编码。据我所知,从一个系统到另一个系统可能会有所不同,那么我如何明确地为我的问题定义编码呢?

1 个答案:

答案 0 :(得分:5)

使用文本编码将任意,完全随机的字节数组转换为字符串不是一个好主意,因为只有字节实际上代表一个有效的文本,这显然不正确,如您的示例所示。

改为使用Base64Encoding!

Convert.ToBase64String(参见https://msdn.microsoft.com/de-de/library/8f9a8s97(v=vs.110).aspx) Convert.FromBase64String(参见https://msdn.microsoft.com/en-us/library/system.convert.frombase64string(v=vs.110).aspx