私はランダムな文字列を.NETで生成してバイトに変換しようとしていますが、少し難しそうです。私は可能な文字の完全なセットが欲しいです、そして、私の理解は文字列が任意の文字を含むことができるということです。理論的にはランダムな文字列を生成する
var plainText = new StringBuilder();
for (int j = 0; j < stringLength; ++j)
{
plainText.Append((char)_random.Next(char.MinValue, char.MaxValue));
}
byte[] x = Encoding.Unicode.GetBytes(plainText.ToString());
string result = Encoding.Unicode.GetString(x);
を、plainText
とresult
が同一である必要があります:
私のコードは次のように現在あります。それらはほとんど同じですが、元の文字の一部が失われ、55000-57000の文字のようです。文字は65533に置き換えられます。
私の問題は、私はUnicodeがこれを適切に処理できると思った。私はUTF8とUTF32を試しましたが、それらは私に同じ問題を与えます。
どのような考えですか?
strange ?!ユニコードは可能かもしれませんが、あなたがutf-32でテストしたときに! – TheHe
あなたは何を達成しようとしていますか? – CodesInChaos
私はあなたが対になっていないサロゲート文字で無効なUTF-16文字列を生成していると仮定します。 – CodesInChaos