0

これをやろうとすると、いくつかの問題に遭遇しました:

public byte[] Login()
    {
        return Encoding.ASCII.GetBytes("WA\x01\x00\x00\x19\xf8\x05\x01\xa0\x8a\x84\xfc\x11iPhone-2.6.7-5222\x00\x08\xf8\x02\x96\xf8\x01\xf8\x01\x7e\x00\x07\xf8\x05\x0f\x5a\x2a\xbd\xa7");
    }

これらのバイトは両方とも、私が望まないものに\x8a\x84エンコードされます。\xbf\xbf私はすでに Default Encoding、UTF、および Unicode を試しましたが、それらはすべて必要なものを提供していません。

これはソケット クライアントです。

4

2 に答える 2

3

しかし、それらはすべて私が必要とするものを提供しません

あなたが実際に何を必要としているのか、私たちにはわかりません。

バイト値を取得しようとして0x8aいて、最初からテキストを使用しないことをお勧めします。そもそも、これが実際0x84にはすべてテキスト データであるようには見えません。その中にはおそらくテキストのビットがあるように見えますが、それらの側面にはエンコーディングを使用できますが、固定バイナリデータが必要な場合は、実際にはテキストではない「テキスト」をデコードするのではなく、バイトとして指定する必要があります.

(ISO-8859-1)を使用すると、期待どおりの結果が得られる可能性Encoding.GetEncoding(28591)がありますが、それでも実行すべきことではありません。

于 2012-05-29T17:44:34.017 に答える
1

ASCII は値 127 より上では定義されていません。

なぜバイトをバイトに変換するために文字列仲介を使用しているのか疑問に思います。

代わりに、このようなことをして、この問題を完全に解消することができます。

Encoding.ASCII.GetBytes("WA")
.Concat(new byte[] { 1, 2, 3, 4, 5 })
.Concat(Encoding.ASCII.GetBytes("iPhone-2.6.7-5222"))
.Concat(new byte[] { 6, 7, 8, 9, 10 })
.ToArray()
于 2012-05-29T17:45:11.663 に答える