printf("%p", (void*)array);
(Una expresión de matriz, en la mayoría de los contextos, se convierte implícitamente a ("decae" a) un puntero a la matriz de primera elemento.)
Si desea imprimir cada elemento de su matriz, tendrá que hacerlo explícitamente. El formato "%s"
toma un puntero al primer carácter de una cadena y dice printf
para iterar sobre la cadena, imprimiendo cada carácter. No hay un formato que haga ese tipo de cosas en hexadecimal, por lo que tendrá que hacerlo usted mismo.
Por ejemplo, dado:
unsigned char arr[8];
puede imprimir el elemento 5 de esta manera:
printf("0x%x", arr[5]);
o, si quieres un cero a la izquierda:
printf("0x%02x", arr[5]);
El formato "%x"
requiere un argumento de unsigned int
, y el valor de unsigned char
es aprobado ing es implícitamente promovido a unsigned int
, por lo que es correcto. Puede usar "%x"
para imprimir los dígitos hexadecimales a
a través de f
en minúsculas, "%X"
para mayúsculas (utilizó ambos en su ejemplo).
(Tenga en cuenta que el formato "0x%02x"
funciona mejor si los bytes son 8 bits, esto no está garantizado, pero es casi seguro que el caso en cualquier sistema es muy probable que utilice.)
lo dejo a usted escribir el ciclo apropiado y decidir cómo delimitar el resultado.
Haga que su matriz escriba 'unsigned char []' en lugar de 'char []'. –
http://stackoverflow.com/questions/6357031/how-do-you-convert-buffer-byte-array-to-hex-string-in-c –