正確に同じバイト配列を取り戻す限り、エンコードやものはあまり気にしません。
要約すると、バイト配列を文字列に変換し、その文字列を元のバイト配列に戻すにはどうすればよいですか?
バイトを文字列に変換したり元に戻す最も安全な方法は、base64を使用することです。
string base64 = Convert.ToBase64String(bytes);
byte[] bytes = Convert.FromBase64String(base64);
そうすれば、サロゲートペアの前半部分など、後半部分のない「無効な」ユニコードシーケンスを取得しないことが保証されます。データを奇妙なもの(すべて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);
}
Convert.ToBase64ドキュメントを使用できます http://msdn.Microsoft.com/en-us/library/dhx0d524.aspx