C# 通过套接字接收原始十六进制并转换为字符串
我有以下问题,我试图从TCP/IP套接字接收原始十六进制值,并将其写入txt文件,只是在将原始十六进制数据转换为UTF-8字符串时遇到一些问题。我使用以下方法: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
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这就是诀窍,谢谢老兄!