Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过套接字接收原始十六进制并转换为字符串_C#_Sockets_Character Encoding_Hex_Data Conversion - Fatal编程技术网

C# 通过套接字接收原始十六进制并转换为字符串

C# 通过套接字接收原始十六进制并转换为字符串,c#,sockets,character-encoding,hex,data-conversion,C#,Sockets,Character Encoding,Hex,Data Conversion,我有以下问题,我试图从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

我有以下问题,我试图从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);
}
这将返回:
*ý%ˆ‡…ÿ338; 7ºeb%ý

如何成功读取原始十六进制数据并将其转换为可读字符串?

使用位转换器:

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来自哪里吗?是的,你正在读取缓冲区大小。我会更新我的答案。请稍等。@ErwinVorenhout应该修复它,以便它现在只使用从流读取的字节。2AFEFFD25010000000000018E00000000EEA878500FF00000A000000000008C37BA658F0042000027ED这就是诀窍,谢谢老兄!