98

我真的不关心编码和东西,只要我得到完全相同的字节数组。

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

4

3 回答 3

185

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

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

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

是的,你最终每 3 个字节有 4 个字符 - 但对于你的数据不会被破坏的知识来说,这是一个很小的代价。

于 2009-07-15T23:46:11.123 回答
9

你可以使用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);
}
于 2012-03-05T20:35:40.360 回答
3

您可以使用 Convert.ToBase64 文档http://msdn.microsoft.com/en-us/library/dhx0d524.aspx

于 2009-07-15T23:47:46.080 回答