cadena Convert ASCII (char []) para la matriz de bytes en C

C | Convertir una cadena ASCII a matriz de bytes : Aquí, vamos a aprender cómo convertir una cadena dada (que contiene caracteres ASCII) a su matriz de bytes equivalente en C ?

Dada una cadena ASCII (char []) y tenemos que convertirlo en matriz de bytes (byte []) en C.

Lógica:

Para convertir una cadena ASCII a matriz de bytes , siga los pasos mencionados a continuación:

  • Extracto de caracteres de la cadena de entrada y obtener el valor del personaje en formato de número entero / número usando % d especificador de formato, % d da número entero (número) es decir, valor de byte de cualquier personaje.
  • Añadir estos bytes (número) que es un valor entero de un carácter ASCII a la matriz de salida.
  • después de cada iteración aumentar contador de bucle de la cadena de entrada ( bucle ) por 1 y contador de bucle de matriz de salida ( i ) por 1.

Ejemplo:

    Input: "Hello world!"
Output:
72
101
108
108
111
32
119
111
114
108
100
33

C programa para convertir ASCII char [] para el conjunto de bytes

En este ejemplo, ascii_str es una cadena de entrada que contiene “¡Hola mundo!” , estamos convirtiendo a una matriz de bytes. A continuación, creamos una función void string2ByteArray (char * de entrada, BYTE * salida) , a la cadena de conversión ASCII a matriz de bytes , la salida final (matriz de enteros) está almacenando en arr variable, que se pasa como una referencia en la función.

Nota: Aquí, hemos creado un typedef BYTE de unsigned char tipo de datos y como sabemos un valor unsigned char puede almacenar de 0 a 255.

Leer más: typedef en C, unsigned char en C

#include <stdio.h>
#include <string.h>
typedef unsigned char BYTE;
//function to convert string to byte array
void string2ByteArray(char* input, BYTE* output)
{
int loop;
int i;
loop = 0;
i = 0;
while(input[loop] != '_CP1_')
{
output[i++] = input[loop++];
}
}
int main(){
char ascii_str[] = "Hello world!";
int len = strlen(ascii_str);
BYTE arr[len];
int i;
//converting string to BYTE[]
string2ByteArray(ascii_str, arr);
//printing
printf("ascii_str: %sn", ascii_str);
printf("byte array is...n");
for(i=0; i<len; i++)
{
printf("%c - %dn", ascii_str[i], arr[i]);
}
printf("n");
return 0;
}

salida

ascii_str: Hello world!
byte array is...
H - 72
e - 101
l - 108
l - 108
o - 111
- 32
w - 119
o - 111
r - 114
l - 108
d - 100
! - 33

Leer más …

  • octal literales en lenguaje C
  • trabajar con números octales en lenguaje C
  • de Trabajo con los números hexadecimales en lenguaje C


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *