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