私のプログラムは、あるアプリケーションから別のアプリケーションにデータをバイト配列で送信します。データのセクションを引き出して、さまざまな変数に保存したいと考えています。たとえば、バイト配列の最初の [7] はシンボル データを保持します。次のセクションは、送信するメッセージごとに異なるため、長さがわからない数値です。データを送信する前に、必要なデータの各セクション間をコンマで分割します。私の問題は、データを別の変数に追加できるように、コンマで停止するループを設定することです。これが理にかなっていれば、どんなアイデアでも助けてください。ありがとう。
3 に答える
1
コンマは異なるエンコーディングスキームで常に同じバイト値であるとは限らないため、使用しているエンコーディングを知る必要があります。また、効率が必要な場合は、バイト配列をバイト配列として解析することもできますが、これは簡単です。また、必要なプロパティを持ち、[シリアル化可能] なクラスを両端に作成することもできます。
何らかの理由でそれをしたくない場合は、次のようにバイト配列を簡単に解析できます。
UTF8Encoding encoding = new UTF8Encoding();
string s = encoding.GetString(byteArray);
string[] values = s.Split(new char[] {','});
//then do something with the values
于 2012-12-05T19:06:46.330 に答える
1
データは実際にはエンコードされたテキストであるため、バイト配列として扱うのは複雑です。それをデコードして(バイト配列に変換するために使用したエンコーディングを使用して)、分割します。
string[] parts = Encoding.UTF8.GetString(data).Split(',');
これで、各部分を取得して解析できます。
int symbol = Int32.Parse(parts[0]);
int count = Int32.Parse(parts[1]);
于 2012-12-05T19:10:05.770 に答える
0
送信する必要があるデータを表すオブジェクト モデルを定義し、シリアライゼーション フレームワークを使用してこれをバイト配列との間で変換することをお勧めします。
たとえば、http://msdn.microsoft.com/en-us/library/ms973893.aspxを参照してください。
あなたにとって興味深いかもしれないもう 1 つのトピックは、.Net のデータ コントラクトです。
于 2012-12-05T19:01:10.603 に答える