我并不关心编码和其他类似的东西,只要我能得到完全相同的字节数组就好了。
因此,总结一下:我应该如何将一个字节数组转换成字符串,然后再将那个字符串转回我最初使用的同样的字节数组呢?
我并不关心编码和其他类似的东西,只要我能得到完全相同的字节数组就好了。
因此,总结一下:我应该如何将一个字节数组转换成字符串,然后再将那个字符串转回我最初使用的同样的字节数组呢?
将字节转换为字符串,然后再转换回来的绝对最安全的方法是使用 base64:
string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);
这样,您就可以确保不会出现“无效”的Unicode序列,例如只有第一个代理对的情况。没有任何东西会决定将数据规范化为奇怪的内容(全部都是ASCII)。也不可能使用未在Unicode中注册的代码点或类似的内容。哦,而且你也可以放心地复制和粘贴。
是的,每3个字节就会变成4个字符——但为了确保您的数据不被损坏,这是很小的代价。
Convert
类。/// <summary>
/// Converts a string to byte array
/// </summary>
/// <param name="input">The string</param>
/// <returns>The byte array</returns>
public static byte[] ConvertToByteArray(string input)
{
return input.Select(Convert.ToByte).ToArray();
}
/// <summary>
/// Converts a byte array to a string
/// </summary>
/// <param name="bytes">the byte array</param>
/// <returns>The string</returns>
public static string ConvertToString(byte[] bytes)
{
return new string(bytes.Select(Convert.ToChar).ToArray());
}
/// <summary>
/// Converts a byte array to a string
/// </summary>
/// <param name="bytes">the byte array</param>
/// <returns>The string</returns>
public static string ConvertToBase64String(byte[] bytes)
{
return Convert.ToBase64String(bytes);
}