74

.NET で同等のバイト配列に変換する必要がある文字列があります。

これは簡単なはずですが、脳が痙攣しています。

4

4 に答える 4

99

System.Text.Encoding出力として何を期待するかを .NET に伝えるには、エンコーディング( )を使用する必要があります。たとえば、UTF-16 (= System.Text.Encoding.Unicode)の場合:

var result = System.Text.Encoding.Unicode.GetBytes(text);
于 2008-10-27T21:11:37.823 に答える
41

まず、必要なエンコーディングを決定します。最初に Unicode について少し知っておく必要があります。

System.Text.Encoding次はそれに対応するワークアウト。My Core .NET refcard では、一般的なもののほとんどと、インスタンスを取得する方法について説明しています (たとえば、 の静的プロパティEncodingまたは .NET を呼び出すことによって) Encoding.GetEncoding

最後に、すべてのバイトを一度に取得するか (これが最も簡単な作業方法です。Encoding.GetBytes(string)を 1 回呼び出すだけで完了です)、またはチャンクに分割する必要があるかどうかを判断します。Encoding.GetEncoderを使用してから、一度に少しずつエンコードします。エンコーダーは、たとえば文字の途中で中断する必要がある場合に備えて、呼び出し間の状態を維持します。

于 2008-10-27T21:33:07.063 に答える
20

どのエンコーディングを使用していますか? Konrad はそれをかなり理解しましたが、他にもあり、間違ったもので間抜けな結果が得られる可能性があります。

byte[] bytes = System.Text.Encoding.XXX.GetBytes(text)

可能な場所XXX:

ASCII
BigEndianUnicode
Default
Unicode
UTF32
UTF7
UTF8
于 2008-10-27T21:29:12.313 に答える
8

このような:

    string test = "text";
    byte[] arr = Encoding.UTF8.GetBytes(test);
于 2008-10-27T21:11:44.673 に答える