Я разрабатываю терминальную программу, которая показывает переданные данные для некоторого комм. протоколы. Данные поступают через UDP (или TCP) в приложение для ПК и записывают его в richTextBox. Я получаю данные UDP в формате byte [] и преобразую их в строку для отображения в текстовом поле. Однако преобразование слишком медленное для потоковых приложений. Есть ли другое быстрое решение?
private void Receive(IAsyncResult ar)
{
IPEndPoint ip = new IPEndPoint(ipadress, port);
byte[] bytes = udp.EndReceive(ar, ref ip); // Get actual data
if (binary format) // Convert to bytes to binary for textbox
{
//This conversion is slow
string data = string.Join( " ",
bytes.Reverse().Select( x => Convert.ToString( x, 2 ).PadLeft( 8, '0' ) )
this.Invoke(new(MethodInvoker(delegate
{
textDisplay.Text += "\nReceived Data: " + data;
}));
);
else if (ascii format) // Convert to bytes to ascii
{
string data = Encoding.ASCII.GetString(bytes);
this.Invoke(new(MethodInvoker(delegate
{
textDisplay.Text += "\nReceived Data: " + data;
}));
}
UdpReceive(); // Calls itself again from one upper method
}
...further formats can be added...
байтов в двоичное преобразование строки звучит немного странно для меня, потому что у меня есть фактические двоичные данные в байтовом формате, который является 8-битным, однако я не могу получить его без преобразования ..