首页 > 解决方案 > 在 C# 中将字节数组转换为字符串,反之亦然

问题描述

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

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

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

标签: c#

解决方案


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

改用 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 )


推荐阅读