¿Cómo asignar valores hexadecimales al tipo char sin terminación nula?

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 };