Convertir cadena hexadecimal a bytes

Utilice el lenguaje C para convertir una cadena en formato hexadecimal como "1F" en un tipo 1F de un solo byte.
Por ejemplo, una cadena de "1F2D34" se convierte en tres caracteres, 1F, 2D, 34.

  1. Puedes considerar usar la función strtol.
//fucntion: transfer a hex string such as "1F" to unsigned char 1F
//param 1: source hex string that you need to transfer
//param 2: dest char addr
//return: success or not
bool hexstr2hex(char *str, unsigned char *dst)
{
    
    
	if(str == NULL || dst == NULL)
	{
    
    
		return false;
	}
	if(str+1 == NULL)
	{
    
    
		return false;
	}
	
	char num[3] = {
    
    0};
	sprintf_s(num, sizeof(num), "%c%c", str[0], str[1]);
	
	*dst = strtol(num, NULL, 16);
	return true;
}
  1. Puedes usar la función sscanf.
unsigned char code[6] = {
    
    0};
char string[13] = "1122334455FF";
int nLen = strlen(string);
for(int i=0; i<nLen; i+=2)
{
    
    
	sscanf(&string[i], "%02X", (unsigned int*)&code[i/2]);
}
for(int i=0; i<6; i++)
{
    
    
	printf("%c", code[i]);
}

Los códigos de salida son:
código[0]=11;
código[1]=22;
código[2]=33;
código[3]=44;
código[4]=55;
código[5]=FF;

Supongo que te gusta

Origin blog.csdn.net/csdn_zmf/article/details/122215843
Recomendado
Clasificación