C/Visual C - fichero hexadecimal

 
Vista:

fichero hexadecimal

Publicado por boo (2 intervenciones) el 19/10/2007 11:56:02
Tengo un fichero que editándolo en el ultraedit en modo hexadecimal es de la siguiente forma:

00000000h: 30 82 0A 71 06 09 2A 86 48 86 F7 0D 01 07 02 A0 ; 0‚.q..*†H†÷....
00000010h: 82 0A 62 30 82 0A 5E 02 01 01 31 00 30 0B 06 09 ; ‚.b0‚.^...1.0...
00000020h: 2A 86 48 86 F7 0D 01 07 01 A0 82 0A 46 30 82 05 ; *†H†÷.... ‚.F0‚.
00000030h: 65 30 82 04 CE A0 03 02 01 02 02 11 00 D0 1E 47 ; e0‚.Î .......Ð.G

lo que quería era pasarlo a otro fichero de la siguiente forma:

30 82 0A 71 06 09 2A 86 48 86 F7 0D 01 07 02 A0

es decir, con sólo los números hexadecimales.
Pero no se como hacerlo. Alguien tiene una idea aproximada de cómo puedo hacer esto en C?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:fichero hexadecimal

Publicado por fernando.gomez (1603 intervenciones) el 23/10/2007 03:57:59
Bueno, a ver. Cuando tu guardas un dato en un archivo, lo guardas en binario. Siempre. Siempre. Siempre. Cuando tu abres un archivo cualquiera con un notepad (o en tu caso, el ultraedit), lo que abre es el binario (porque siempre se guardan en binario). Entonces el editor interpreta cada byte y el número que contenga lo transporta a su código ASCII correspondiente. Si yo quiero guardar "ABC", por ejemplo, entonces al hacer un:

fprintf(file, "ABC");

lo que hace es escribir el valor numérico correspondiente, a saber, un byte con el número 65, uno con el 66 y otro con el 67. Al abrir dicho archivo en un editor de texto, éste interpretará esos códigos y te aparecerá un "ABC".

Entonces llegamos al dilema de tu pregunta. Si lo que quieres es que un editor interprete los bytes de tal suerte que aparezca la secuencia que tu describiste, pues basta con que los guardes con fprintf y con la cadena de texto correspondiente:

fprintf(file, "30 82 0A 71 06 09 2A 86 48 86 F7 0D 01 07 02 A0");

Pero supongo que no es esto lo que quieres, sino que se guarden esos números. En tal caso, bastaría con que a tu búfer le asignaras dichos valores:

char buffer[20];

memset(buffer, 0, 20);

buffer[0] = 0x30;
buffer[1] = 0x82;
buffer[2] = 0x0A;
...
buffer[14] = 0x02;
buffer[15] = 0xA0;

fprintf(file, buffer);

y listo. Por supuesto, habrá métodos más fáciles y menos tediosos de hacerlo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:fichero hexadecimal

Publicado por boo (2 intervenciones) el 23/10/2007 09:22:25
Fernando, muchas gracias por contestar.
Quizás no me expliqué demasiado bien, lo que yo quiero hacer es pasar esos números pero primero tengo que leerlos de ese fichero y es ahí donde me viene el problema, que no se como leerlos porque si leo por caracteres escribe cosas raras entonces no se muy bien que código tengo que usar. ¿Sabes a qué me refiero?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar