2016-10-17 6 views
0

解決方法がわからない瞬間に問題があります。C#シリアル化されたオブジェクトのバイトを文字列に変換する

技術的な進歩は、TCPClientからTCPServerにバイトを送信しています。 送信されたメッセージは例です:1- [BYTES-OF-SERIALIZED-OBJECT] これで、バイト配列からこれらのバイトを文字列に変換して正規表現で作業する必要がありました。

これを解決するアイデアはありますか?なぜなら、バイト配列を文字列に変換すると、エンコーディングがデコードされないからです。 大括弧内のシリアル化されたバイトを別のものに変換してから変換する必要があるかもしれませんか?何か案が?

+0

「Encoding.UTF8.GetString()」 –

+0

私が書いたように、エンコードは機能しませんでした。私がそれを試して、MessageBoxに完全なメッセージを表示すると、私は "1- ["とバイトが見つかりません。 – programmer444

+0

したがって、非asc-iiデータを正規表現しようとしています。私はそれを最初に提案した:https://social.msdn.microsoft.com/Forums/vstudio/en-US/df18cca9-5e54-410e-a5c5-74efc7b52e29/does-c-supoort-binary-regular-expression?forum = csharpgeneral –

答えて

0

解決策は、オブジェクトをbase64エンコード文字列にシリアル化することでした。送信されたメッセージは、例として次のようになります。(1)[BASE64STRING-OF-SERIALIZED-OBJECT]。 私はregexを使って作業することができ、base64文字列を再度フォーマットする必要はありません。

+0

これは、データがnull char(値0のバイト)を含んでいたために発生した可能性があります。 null charは、通常、end-of-stringを示します。これは、ほとんどのコントロールがそのポイントの後のテキストのレンダリングを停止させる原因となります。必ずしもテキストではない文字列を送信する場合は、常にBase64を使用する必要があります。 –

関連する問題