C#二进制数据转换为字符串

这是交易。 我发现了一个源代码并稍微改了一下,所以我可以从com6上的接收器中检索数据。 我收到的数据是二进制的。 我想要的是将它转换为字符串,以便我可以切割部分字符串并单独解码它们。 我怎样才能做到这一点? 源代码在下面。

using System; using System.IO.Ports; using System.Threading; public class PortChat { static bool _continue; static SerialPort _serialPort; public static void Main() { string name; string message; StringComparer stringComparer = StringComparer.OrdinalIgnoreCase; Thread readThread = new Thread(Read); // Create a new SerialPort object with default settings. _serialPort = new SerialPort(); // Allow the user to set the appropriate properties. _serialPort.PortName = SetPortName(_serialPort.PortName); _serialPort.BaudRate = SetPortBaudRate(_serialPort.BaudRate); _serialPort.Parity = SetPortParity(_serialPort.Parity); _serialPort.DataBits = SetPortDataBits(_serialPort.DataBits); _serialPort.StopBits = SetPortStopBits(_serialPort.StopBits); _serialPort.Handshake = SetPortHandshake(_serialPort.Handshake); // Set the read/write timeouts _serialPort.ReadTimeout = 1000; _serialPort.WriteTimeout = 1000; _serialPort.Open(); _continue = true; readThread.Start(); Console.Write("Name: "); name = Console.ReadLine(); Console.WriteLine("Type QUIT to exit"); while (_continue) { message = Console.ReadLine(); if (stringComparer.Equals("quit", message)) { _continue = false; } else { _serialPort.WriteLine( String.Format(": {1}", name, message)); } } readThread.Join(); _serialPort.Close(); } public static void Read() { while (_continue) { try { string message = _serialPort.ReadLine(); Console.WriteLine(message); } catch (TimeoutException) { } } } public static string SetPortName(string defaultPortName) { string portName; portName = "COM6"; return portName; } public static int SetPortBaudRate(int defaultPortBaudRate) { string baudRate; baudRate = "9600"; return int.Parse(baudRate); } public static Parity SetPortParity(Parity defaultPortParity) { string parity; parity = "None"; return (Parity)Enum.Parse(typeof(Parity), parity); } public static int SetPortDataBits(int defaultPortDataBits) { string dataBits; dataBits = "8"; return int.Parse(dataBits); } public static StopBits SetPortStopBits(StopBits defaultPortStopBits) { string stopBits; stopBits = "One"; return (StopBits)Enum.Parse(typeof(StopBits), stopBits); } public static Handshake SetPortHandshake(Handshake defaultPortHandshake) { string handshake; handshake = "None"; return (Handshake)Enum.Parse(typeof(Handshake), handshake); } } 

来自端口的数据总是以二进制(字节)forms出现,因此它取决于如何解释数据。 假设字节是ASCII,您可以将其编码为字符串,如下所示:

 byte[] binaryData ; // assuming binaryData contains the bytes from the port. string ascii = Encoding.ASCII.GetString(binaryData);