ArrayOfByte_TO_String: Conversión de matrices en formato de bytes a un formato de cadena
En esta figura se muestra el diagrama de pines de la función ArrayOfByte_TO_String:
La cadena de salida [255] es el conjunto de caracteres de la cadena que corresponde al valor ASCII de la matriz de entrada proporcionada en formato de bytes.
Si la entrada de Orden es TRUE, el orden de los caracteres de la cadena de salida corresponde al orden de los bytes en la matriz de entrada. Esto significa que hay una correspondencia 1:1 entre el orden de los bytes de entrada y el orden de los caracteres de la cadena devueltos en la salida, como se explica en el ejemplo 1.
Si la entrada de Orden es FALSE, el orden de caracteres de la cadena de salida será de tal forma que el carácter de la cadena correspondiente al valor ASCII en entrada [1] se muestra en la posición [2] de la salida [1..255]. El carácter de la cadena correspondiente al valor ASCII en entrada [2] se mostrará en la posición [1] de la salida [1..255].
De igual forma, el carácter de la cadena correspondiente al valor ASCII en entrada [3] se mostrará en la posición [4] de la salida [1..255]. El carácter de la cadena correspondiente al valor ASCII en entrada [4] se mostrará en la posición [3] de la salida [1..255], como se explica en el ejemplo 2.
Sólo si la entrada de Orden es FALSE, la entrada de Espacio es TRUE y el número de bytes de entrada en la entrada es impar, se agregará un carácter de espacio antes del último carácter de la cadena de salida, como se muestra en los ejemplos 3 y 4.
Pero si la entrada de Orden es TRUE, la entrada de Espacio no tendrá efecto en la salida, como se muestra en el ejemplo 6.
Entrada: ARRAY [1..255] OF BYTE = 72, 69, 76, 76, 79;
Orden: TRUE
Espacio: FALSE
Cadena: 'HOLA'
Como se ha mostrado antes, el orden de los caracteres en la cadena de salida corresponde al orden de los bytes de entrada; es decir, el valor de los bytes en la primera posición de Matriz [1..255] es 72, que corresponde al valor de la cadena en la primera posición de la salida, que es H. El valor de los bytes en la segunda posición de Matriz[1..255] es 69, que corresponde al valor de la cadena en la segunda posición de la salida, que es O, etc.
Entrada: ARRAY [1..255] OF BYTE = 65, 66, 67, 68, 69, 70, 71;
ByteOrder: FALSE
InsertSpace: FALSE
Cadena: 'BADCFEG'
Como se ha mostrado antes, el orden de los caracteres en la cadena de salida ha cambiado; el valor de los bytes en la primera posición de Matriz [1...255] es 65, que corresponde al valor de la cadena en la segunda posición de la salida, que es A. El valor de los bytes en la segunda posición de Matriz [1..255] es 66, que corresponde al valor de la cadena en la primera posición de la salida, que es B. De igual forma, el valor de los bytes en la tercera posición de Matriz [1..255] es 67, que corresponde al valor de la cadena en la cuarta posición de la salida, que es C. El valor de los bytes en la cuarta posición de Matriz[1..255] es 68, que corresponde al valor de la cadena en la tercera posición de la salida, que es D, etc.
Entrada: ARRAY [1..255] OF BYTE = 72, 69, 76, 76, 79;
Orden: FALSE
Espacio: TRUE
Cadena: 'EHLL O'
Entrada: ARRAY [1..255] OF BYTE = 65, 66, 67, 68, 69, 70, 71;
Orden: FALSE
Espacio: TRUE
Cadena: 'BADCFE G'
Como se ha mostrado antes, en los ejemplos 3 y 4, el número de entradas es 5 en el ejemplo 3 y 7 en el ejemplo 4. Puesto que 5 y 7 son números impares, la entrada de Orden es FALSE y la entrada de Espacio es TRUE. Por tanto, las salidas de la cadena son 'EHLL O' y 'BADCFE G' respectivamente.
NOTA: Sin embargo, si el número de bytes en la entrada es 255, la entrada de Orden es FALSE y la entrada de Espacio es TRUE. La entrada de Espacio pasa a ser insignificante, como se explica en el ejemplo 5 anterior.
Entrada: ARRAY [1..250] OF BYTE = 65 y ARRAY [251..255] OF BYTE = 66, 67, 68, 69, 70;
Orden: TRUE
Espacio: TRUE/FALSE
Cadena[1..250]: 'A' y Cadena[251..255] = 'CBEDF'
Como se muestra el ejemplo anterior, si el número de bytes en la entrada es 255, la salida de la cadena no se ve afectada por la entrada de Espacio.
Entrada: ARRAY [1..255] OF BYTE = 65, 66, 67, 68, 69, 70, 71;
Orden: TRUE
Espacio: TRUE
Cadena: 'ABCDEFG'
Como se ha mostrado anteriormente, si la entrada de Orden es TRUE, la entrada de Espacio pasa a ser insignificante.
Descripción de pines de entrada
En esta tabla se describen los pines de entrada de la función ArrayOfByte_TO_String:
Entrada |
Tipo de datos |
Descripción |
---|---|---|
i_abyIput |
ARRAY[0..255] OF BYTE |
Valor de entrada Rango: de 0 a 255 |
i_xOrdr |
BOOL |
TRUE: en el orden de entrada FALSE: intercambia los bytes más alto y más bajo |
i_xSpce |
BOOL |
TRUE: inserta un espacio cuando i_xOrdr es baja FALSE: no se inserta ningún espacio |
NOTA: I_xSpce insertará un espacio justo antes del último carácter de la cadena de salida cuando la entrada de Orden es FALSE y el número de bytes de la entrada es impar.
Descripción de pines de salida
En esta tabla se describen los pines de salida de la función ArrayOfByte_TO_String:
Salida |
Tipo de datos |
Descripción |
---|---|---|
ArrayOfByte_TO_String |
STRING(255) |
Salida de los caracteres de cadena |
NOTA: Es obligatorio para el usuario definir el tamaño de la salida de la cadena como [255]; de lo contrario el tamaño se toma como 80 de forma predeterminada.
Ejemplo de instanciación y uso
En esta figura se muestra una instancia de la función ArrayOfByte_TO_String:
Con entrada de Orden y sin entrada de Espacio
Si la entrada es:
oi_abyIput [255]
oEntrada [1] = 65
oEntrada [2] = 66
oEntrada [3] = 67
oEntrada [4] = 68
oEntrada [5] = 69
oi_xOrdr: TRUE
oi_xSpce: FALSE
ArrayOfByte_TO_String muestra 'ABCDE'.
Con entrada de Orden y con entrada de Espacio
Si la entrada es:
oi_abyIput [255]
oEntrada [1] = 65
oEntrada [2] = 66
oEntrada [3] = 67
oEntrada [4] = 68
oEntrada [5] = 69
oi_xOrdr: FALSE
oi_xSpce: TRUE
ArrayOfByte_TO_String muestra 'BADC E'.