各 8 ビット バイトを 16 ビット char に格納するために必要なスペースが 2 倍になることを気にせず、文字列を印刷可能な文字で構成する必要がない場合は、次の直接的な方法で行うことができます。
string BytesToString(byte[] b)
{
StringBuilder s;
s = new StringBuilder(b.Length);
for (int i = 0; i < b.Length; i++)
s[i] = (char) b[i]; // Cast not really needed
return s.ToString();
}
byte[] StringToBytes(string s)
{
byte[] b;
b = new byte[s.Length];
for (int i = 0; i < b.Length; i++)
b[i] = (byte) s[i];
return b;
}
2 つの 8 ビット バイトを各 16 ビット Unicode char にパックするためのより精巧なコードを作成することもできますが、その場合、バイト配列の長さが奇数になるという特殊なケースを処理する必要があります (これは、最後に追加のセンチネル バイトを使用して行うことができます)。キャラクター)。