Convertir cadena ASCII (char []) para cadena hexadecimal (char []) en C

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

Dada una cadena ASCII (char []) y tenemos que convertirlo en cadena hexadecimal (char []) en C.

Lógica:

Para convertir una cadena ASCII a cadena hexadecimal , siga los pasos mencionados a continuación:

  • Extracto de caracteres de la cadena de entrada y convertir al personaje en formato hexadecimal utilizando % 02X especificador de formato, % 02X da 0 acolchado dos bytes valor hexadecimal de cualquier valor (como int , char ).
  • Añadir estos dos bytes (caracteres), que es un valor hexadecimal de un carácter ASCII a la cadena 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 cadena de salida ( i ) por 2.
  • Al final del bucle, insertar un NULL carácter a la cadena de salida.

Ejemplo: “¡Hola mundo”

    Input: "Hello world!"
Output: "48656C6C6F20776F726C6421"

C programa para convertir ASCII char [] para char hexadecimal []

En este ejemplo, ascii_str es una cadena de entrada que contiene , estamos convirtiendo en una cadena hexadecimal. A continuación, creamos una función void string2hexString (* char de entrada, de salida char *) , para convertir una cadena ASCII a cadena hexadecimal , la cadena de salida final se almacena en la variable de hex_str.

#include <stdio.h>
#include <string.h>
//function to convert ascii char[] to hex-string (char[])
void string2hexString(char* input, char* output)
{
int loop;
int i;
i=0;
loop=0;
while(input[loop] != '_CP1_')
{
sprintf((char*)(output+i),"%02X", input[loop]);
loop+=1;
i+=2;
}
//insert NULL at the end of the output string
output[i++] = '_CP1_';
}
int main(){
char ascii_str[] = "Hello world!";
//declare output string with double size of input string
//because each character of input string will be converted
//in 2 bytes
int len = strlen(ascii_str);
char hex_str[(len*2)+1];
//converting ascii string to hex string
string2hexString(ascii_str, hex_str);
printf("ascii_str: %sn", ascii_str);
printf("hex_str: %sn", hex_str);
return 0;
}

salida

ascii_str: Hello world!
hex_str: 48656C6C6F20776F726C6421

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 *