2017-03-01 83 views
0

我有以下问题,我尝试从TCP/IP套接字接收原始十六进制值并将它们写入一个txt文件,只有我有一些问题转换此原始十六进制数据转换为UTF-8字符串。我使用下面的方法:通过套接字接收原始十六进制并转换为字符串

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

相关问题