C sharp - Un problema tramas de string

 
Vista:
sin imagen de perfil
Val: 168
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

Un problema tramas de string

Publicado por Meta (122 intervenciones) el 30/11/2023 07:06:44
Hola:

En una variable tipo string[] tengo esto usando el lenguaje C# en decimal.
1
#I225.7O226.2L006B100V25.7F50.2H50.2R0080S€„€ˆ„\r

En otra variable string[] tengo lo mismo pero los datos en decimales.
1
string entrada2 = "35 73 50 51 53 46 51 79 50 51 53 46 55 76 48 48 54 66 49 48 48 86 50 54 46 48 70 53 48 46 50 72 53 48 46 50 82 48 48 56 48 83 144 132 128 136 132 192 13";

Si te fijas bien en el primer delimitador a partir de la S son bits, la trama comparte entre string y nivel a bits, es decir, usa distinto tipos de datos.

La S muestra esto.
S€„€ˆ„\r

Siempre estas cadenas empieza con # y acaba con \r. No se si hace falta usar StartsWith y EndsWith.

Tabla ASCII.
codigo-ascii1-yw

Fijándose en la tabla ASCII la S rn decimal es 83. A partir de ahí en la cadena entrada2 tiene 144 132 128 136 132 192 y el final que es retorno de carro es el 13 en decimal.

Ya que se lee bien los string de esta linea I225.7O226.2L006B100V25.7F50.2H50.2R0080S y después de la S me da disparates como esto: S€„€ˆ„\r, mejor pasarlo a decimal que es esto otro 144 132 128 136 132 192.

El resultado si ejecuto el código completo es este:
aaaaaaaa

La idea es que muestre bien los datos completo al recibirlos, no en en tipo string y entre medio bit, es decir, datos de distintos tipos.

Parece ser que debo capturar o coger estos datos:
I225.7O226.2L006B100V25.7F50.2H50.2R0080

Separarlos y mostralo así:
225.7
226.2
006
100
25.7
50.2
50.2
0080
€„€ˆ„

Como se puede ver, se muestra esto de la S.
€„€ˆ„

Es ilegible, debería mostrarse así y separados al menos en decimal que se entiende mejor como muestra justo abajo.
144
132
128
136
132
192

¿Existe alguna forma posible que muestre bien la trama completa?

Dejo el código de ejemplo en Visual C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
namespace Probando_tramas_para_el_SAI_UPS_01___.NET_6._0
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Text = "Probando tramas de bytes";
        }
 
        private void button_Ver_Click(object sender, EventArgs e)
        {
            // Tramas de bytes con diferentes tipos de datos. A partir de la S, son bits.
            // Siempre la trama empieza con # y acaba con retorno de carro \r. <cr>.
            string entrada = "#I225.7O226.2L006B100V25.7F50.2H50.2R0080S€„€ˆ„\r";
            string entrada2 = "35 73 50 51 53 46 51 79 50 51 53 46 55 76 48 48 54 66 49 48 48 86 50 54 46 48 70 53 48 46 50 72 53 48 46 50 82 48 48 56 48 83 144 132 128 136 132 192 13";
 
            // Delimitador para separar tramas.
            char[] separadores = { '#', 'I', 'O', 'L', 'B', 'V', 'F', 'H', 'R', 'S', '\r' };
 
            // Cortar tramas y lo alacemna en una variable array tipo string.
            string[] salida = entrada.Split(separadores);
 
            foreach (string item in salida)
            {
                richTextBox1.Text += item;
                richTextBox1.Text += Environment.NewLine;
            }
 
            // Nueva línea.
            richTextBox1.Text += Environment.NewLine;
            richTextBox1.Text += Environment.NewLine;
 
            // --------------
 
            string[] salida2 = entrada2.Split(separadores);
 
            foreach (string item2 in salida2)
            {
                richTextBox1.Text += item2;
            }
        }
    }
}

Un cordial saludos.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder