Мне все равно не нужно кодирование и прочее, если я вернусь к одному и тому же массиву байтов.
Итак, чтобы подвести итог: как преобразовать массив байтов в строку, а затем эту строку вернуться в тот же массив байтов, с которого я начал?
Мне все равно не нужно кодирование и прочее, если я вернусь к одному и тому же массиву байтов.
Итак, чтобы подвести итог: как преобразовать массив байтов в строку, а затем эту строку вернуться в тот же массив байтов, с которого я начал?
Абсолютным безопасным способом преобразования байтов в строку и обратно является использование base64:
string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);
Таким образом, вам гарантировано не получить "недействительные" последовательности юникода, такие как первая половина суррогатной пары без второй половины. Ничто не решит нормализовать данные во что-то странное (все это ASCII). Там нет шансов использовать кодовые точки, которые не зарегистрированы в Unicode, или что-то в этом роде. О, и вы можете вырезать и вставить без особого страха тоже.
Да, вы получаете 4 символа на каждые 3 байта - но это небольшая цена, чтобы заплатить за то, что ваши данные не будут повреждены.
Вы можете использовать документацию Convert.ToBase64 http://msdn.microsoft.com/en-us/library/dhx0d524.aspx
Вы можете просто использовать класс 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);
}