2017-03-01 6 views
0

다음과 같은 문제가 있습니다. TCP/IP 소켓에서 원시 16 진수 값을 받고이를 txt 파일에 기록하려고합니다.이 원시 16 진수를 변환하는 데 문제가 있습니다. 데이터를 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

네, 버퍼 크기를 읽는 중입니다. 내 대답을 업데이트 할게. 잠시만. – john

+0

@ErwinVorenhout 이제 스트림에서 읽은 바이트 만 사용하도록 수정해야합니다. – john