如何安全地将字节数组转换为字符串并再次转换为字节数组?

29 浏览
0 Comments

如何安全地将字节数组转换为字符串并再次转换为字节数组?

这个问题已经有了答案

如何在不手动指定编码的情况下在C#中获得字符串的一致字节表示?

我并不真正关心编码和其他的东西,只要我得到完全相同的字节数组就可以了。

总之,我要问的是:如何将一个字节数组转换为一个字符串,然后将那个字符串转换回我开始使用的相同字节数组?

admin 更改状态以发布 2023年5月21日
0
0 Comments

您可以按照以下方式使用 Convert 类。

/// 
/// Converts a string to byte array
/// 
/// The string
/// The byte array
public static byte[] ConvertToByteArray(string input)
{
    return input.Select(Convert.ToByte).ToArray();
}
/// 
/// Converts a byte array to a string
/// 
/// the byte array
/// The string
public static string ConvertToString(byte[] bytes)
{
    return new string(bytes.Select(Convert.ToChar).ToArray());
}
/// 
/// Converts a byte array to a string
/// 
/// the byte array
/// The string
public static string ConvertToBase64String(byte[] bytes)
{
    return Convert.ToBase64String(bytes);
}

0
0 Comments

将字节转换为字符串和反向转换的最绝对最安全的方法是使用base64:

string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);

这样,您就可以确保不会得到“无效”的Unicode序列,例如第一半的替代对而没有第二半。没有任何东西会决定将数据规范化为奇怪的东西(它都是ASCII)。没有使用未在Unicode中注册的代码点或类似的内容的机会。哦,而且你也可以放心地复制粘贴。

是的,你每3个字节就会得到4个字符,但为了确保您的数据不受损坏而付出的代价很小。

0