Ya lo he solucionado usando
sscanf 
sscanf (cadena,"%x",strHex);
Esa llamada a funcion no hara lo esperado, el problema es el siguiente: sscanf consumira
todos los caracteres de la cadena y en base a ellos almacenara
un solo numero en la dirección indicada por "strHex".
Para realizar la operación que mencionas se debe utilizar un bucle y en la llamada a función especificar la anchura de campo, esto es, el máximo de caracteres a procesar con (en tu caso) "%
Nx". El ultimo paso en el cuerpo del bucle (y ello depende de tu programa) es almacenar el numero obtenido en el array de bytes.
Un programa de ejemplo:
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *p = "0011223344556677AABBCCDD";
unsigned num;
int nc;
while (sscanf(p
, "%2x%n", &num
, &nc
) == 1){ printf("%.*s ==> %3u == %2X\n", nc
, p
, num
, num
); p += nc;
}
return EXIT_SUCCESS;
}
Y su salida es:
00 ==> 0 == 0
11 ==> 17 == 11
22 ==> 34 == 22
33 ==> 51 == 33
44 ==> 68 == 44
55 ==> 85 == 55
66 ==> 102 == 66
77 ==> 119 == 77
AA ==> 170 == AA
BB ==> 187 == BB
CC ==> 204 == CC
DD ==> 221 == DD
Un saludo