Me gustaría asignar valores hexadecimales en el tipo char. Debido al carácter nulo ( \x00
), no puedo asignar todos los valores hexadecimales. Solo se pueden asignar 4 caracteres. ¿Cómo asignar todos los valores hexadecimales en (char*)data
?
unsigned char data[100]; sprintf((char*)data,"\x30\x29\x02\x01\x00\x04\x06\x70\x75\x62\x6c\x69\x63\xa0");
En C, el código no puede asignar múltiples valores de una matriz con una asignación. El código puede inicializarse como esta buena respuesta .
Use un bucle o memcpy()
para asignar múltiples valores.
unsigned char data[100]; #define SOURCE_DATA ("\x30\x29\x02\x01\x00\x04\x06\x70\x75\x62\x6c\x69\x63\xa0") #define SOURCE_SIZE (sizeof SOURCE_DATA - 1) memcpy(data, SOURCE_DATA, SOURCE_SIZE);
Como tienes todos tus números hexadecimales disponibles en tiempo de comstackción, puedes asignarlos usando el inicializador de corchetes en lugar de un literal de cadena:
unsigned char data[] = { 0x30, 0x29 ,0x02, 0x01, 0x00, 0x04, 0x06, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0xa0 };