gael
2004-06-06 14:00:52 UTC
Socorro, me estoy volviendo loco.
El siguiente programa:
int _tmain()
{
unsigned long num4;
FILE * salida;
num4=2556;
salida=fopen("c:\\testsalida", "w");
fwrite(&num4, 4, 1, salida);
return 0;
}
genera un archivo de salida que, examinándolo con un editor
hexadecimal, veo que contiene:
fc 09 00 00
Es muy lógico, ya que aquí tenemos los cuatro bytes que ocupa un
unsigned long, en formato little endian, y el numerito escrito es 09fc
que en decimal es 2556. O sea, el resultado previsto.
Pero ahora veamos este otro, que sólo tiene una diferencia respecto al
primero: ahora el valor de la variable num4 es 2564 en lugar de 2556
int _tmain()
{
unsigned long num4;
FILE * salida;
num4=2564;
salida=fopen("c:\\testsalida", "w");
fwrite(&num4, 4, 1, salida);
return 0;
}
Yo, ingenuo, hubiera esperado que al ver el archivo de salida en el
editor hexadecimal apareciese ante mis ojos:
04 0a 00 00
que es a04, que en decimal es 2564.
Pero en lugar de eso hay esto:
04 0d 0a 00 00
Me pregunto de dónde sale el "quinto byte", ese 0d, que está ahí en
medio.
¿Se os ocurre algo?
Un saludo.
El siguiente programa:
int _tmain()
{
unsigned long num4;
FILE * salida;
num4=2556;
salida=fopen("c:\\testsalida", "w");
fwrite(&num4, 4, 1, salida);
return 0;
}
genera un archivo de salida que, examinándolo con un editor
hexadecimal, veo que contiene:
fc 09 00 00
Es muy lógico, ya que aquí tenemos los cuatro bytes que ocupa un
unsigned long, en formato little endian, y el numerito escrito es 09fc
que en decimal es 2556. O sea, el resultado previsto.
Pero ahora veamos este otro, que sólo tiene una diferencia respecto al
primero: ahora el valor de la variable num4 es 2564 en lugar de 2556
int _tmain()
{
unsigned long num4;
FILE * salida;
num4=2564;
salida=fopen("c:\\testsalida", "w");
fwrite(&num4, 4, 1, salida);
return 0;
}
Yo, ingenuo, hubiera esperado que al ver el archivo de salida en el
editor hexadecimal apareciese ante mis ojos:
04 0a 00 00
que es a04, que en decimal es 2564.
Pero en lugar de eso hay esto:
04 0d 0a 00 00
Me pregunto de dónde sale el "quinto byte", ese 0d, que está ahí en
medio.
¿Se os ocurre algo?
Un saludo.