0

getstringでhex型のデータを取得したいのですが、C#がよくわかりません。関数を実装するためにコードを変更するにはどうすればよいですか? ソケット経由で 16 進データを PC に送信し続けるデバイスがあります。hex 型のデータを受信するソケット プログラムを以下に見つけましたが、後で受信データの表示がまったく意味をなさない乱雑なコードになります。間違ったタイプのデータを使用しているのか、それとも他の問題があるのか​​ わかりません。誰でも私がそれを解決するのを手伝ってくれますか、どうもありがとう!

提案に従ってプログラムを修正しました。希望どおりの文字列が得られましたが、後で000000のシリアルが出力され、停止しませんでした。なぜこのようなことが起こったのですか?

 public void ReceiveMsg()
    {
        while (true)
        {
            byte[] data = new byte[1024];
            int recv = newclient.Receive(data);
            Encoding.UTF8.GetString(data, 0, recv);
            string hexString = BitConverter.ToString(data).Replace("-", string.Empty);
            //string stringdata = Encoding.UTF8.GetString(data, 0, recv);
            showMsg(hexString + "\r\n");

        }
    }
4

1 に答える 1

0

このステートメントは、バイト配列を文字列に変換します。

string stringdata = Encoding.UTF8.GetString(data, 0, recv);

次のコードは、バイト配列を 16 進文字列に変換します

StringBuilder hexString = new StringBuilder(data.Length * 2);
foreach (byte b in data)
   hexString.AppendFormat("{0:x2}", b);

またはあなたが使用することができます

string hexString = BitConverter.ToString(data);    
于 2014-03-18T03:53:09.943 に答える