2017-03-01 13 views
0

次の問題があります。TCP/IPソケットからraw HEX値を受け取り、txtファイルに書き込むようにします。このraw HEXを変換する際に問題が発生します。データをUTF-8文字列に変換します。ソケットでraw HEXを受信し、文字列に変換する

TcpClient client = new TcpClient("192.168.200.91", 2101); 
NetworkStream netStream = client.GetStream(); 
byte[] bytes = new byte[client.ReceiveBufferSize]; 
netStream.Read(bytes, 0, (int)client.ReceiveBufferSize); 

string returndata = Encoding.UTF8.GetString(bytes); 

using (var writer = new StreamWriter(@"C:\Users\ -\Documents\test.txt", false, Encoding.UTF8)) 
{ 
    writer.WriteLine(returndata); 
} 

これが返されます:*þý% ˆ ꇅ ÿ Œ7ºe B %û

どのように成功した生のHEXデータを読み、読みやすい文字列にこれを変換するために、私は、次の方法を使用していますか?

答えて

0

使用BitConverter:

TcpClient client = new TcpClient("192.168.200.91", 2101); 
NetworkStream netStream = client.GetStream(); 
byte[] bytes = new byte[client.ReceiveBufferSize]; 
int bytesRead = netStream.Read(bytes, 0, (int)client.ReceiveBufferSize); 

string returndata = BitConverter.ToString(bytes, 0, bytesRead).Replace("-", "") 

using (var writer = new StreamWriter(@"C:\Users\ -\Documents\test.txt", false, Encoding.UTF8)) 
{ 
    writer.WriteLine(returndata); 
} 
+0

主なおかげで、あなたはすべて0から来る任意のアイデアを持っていますか? –

+0

ええ、あなたはバッファサイズを読んでいます。私は私の答えを更新します。一瞬。 – john

+0

@ErwinVorenhoutストリームから読み込まれたバイトのみを使用するように修正する必要があります。 – john

関連する問題