Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何安全地将字节数组转换为字符串并返回?_C#_String_Bytearray - Fatal编程技术网

C# 如何安全地将字节数组转换为字符串并返回?

C# 如何安全地将字节数组转换为字符串并返回?,c#,string,bytearray,C#,String,Bytearray,我真的不在乎编码之类的东西,只要我得到完全相同的字节数组 总而言之:如何将字节数组转换为字符串,然后将该字符串转换回我开始使用的相同字节数组?将字节转换为字符串并返回的最安全方法是使用base64: string base64 = Convert.ToBase64String(bytes); byte[] bytes = Convert.FromBase64String(base64); 这样,您就可以保证不会得到无效的unicode序列,例如代理项对的前半部分没有后半部分。没有什么会决定将数

我真的不在乎编码之类的东西,只要我得到完全相同的字节数组


总而言之:如何将字节数组转换为字符串,然后将该字符串转换回我开始使用的相同字节数组?

将字节转换为字符串并返回的最安全方法是使用base64:

string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);
这样,您就可以保证不会得到无效的unicode序列,例如代理项对的前半部分没有后半部分。没有什么会决定将数据标准化为奇怪的东西——这都是ASCII码。不可能使用未在Unicode或类似代码中注册的代码点。哦,你也可以毫不畏惧地剪切和粘贴


是的,每3个字节就有4个字符,但这是一个很小的代价,因为你知道你的数据不会被破坏。

你可以使用Convert.ToBase64文档

你可以使用下面的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);
}

这篇文章应该取代上面的答案:完成。起初我没看到那张纸条。非常重要!谢谢,再次Jon Skeet=再次Skeet先生回答了我的一个问题,并且在我问之前他又做了一次这是一个非常重要的职位。我在转换方面遇到了巨大的问题,但解决了所有与字符串/字节数组相关的问题。@RuneS:我建议你用一个简短但完整的程序来演示这个问题。@Mehrdad等人,这与.NET字符串到字节数组C的问题不同。这里的问题是-如何从字节数组转换为字符串,然后再转换回来,安全地我使用神奇的Latin1 encoding.GetEncoding 28591,它似乎很好地尊重byte=>string=>byte。