elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Bytes escritos al reves en archivo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Bytes escritos al reves en archivo  (Leído 2,293 veces)
erickgracia

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Bytes escritos al reves en archivo
« en: 22 Abril 2016, 18:40 pm »

Hola a todos, tengo la siguiente duda:


Estoy escribiendo bytes dentro de un archivo de la siguiente manera:

Código:
short lenght = 6;

fwrite(&lenght, sizeof(lenght), 1, file);

esperando que el archivo guarde en Hexadecimal los Bytes 0x00 0x06, en ese orden. Sin embargo el archivo de salida sale primero 0x06 y luego el 0x00.

Haciendo este mismo movimiento con variables int =6, me guarda  los bytes en el orden 0x06 0x00 0x00 0x00, o sea, tambien me los manda al reves de lo esperado.



He investigado y tiene que ver con un tema llamado Endianess, (Big Endian, Little Endian), lo cual me pareció interesante, pero aun no me quito la duda de como hacer para que mi programa guarde los bits del modo que yo quiero. Mas que nada con las variables de tamaño short.  Alguna idea? ;D


De antemano, gracias por su tiempo


En línea

MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: Bytes escritos al reves en archivo
« Respuesta #1 en: 22 Abril 2016, 21:34 pm »

Con la función htons. Es una función muy usada en la comunicación por internet ya que acomoda la representación interna, sea cual sea la de la máquina a big endian, que es el estándar de internet, y de paso, la representación que necesitas en tu archivo.


En línea

erickgracia

Desconectado Desconectado

Mensajes: 17


Ver Perfil
Re: Bytes escritos al reves en archivo
« Respuesta #2 en: 22 Abril 2016, 23:49 pm »

Con la función htons. Es una función muy usada en la comunicación por internet ya que acomoda la representación interna, sea cual sea la de la máquina a big endian, que es el estándar de internet, y de paso, la representación que necesitas en tu archivo.



Gracias por la respuesta tan pronta ;-), aqui van otras dudas si no es mucha molestia  ;D:

1 *¿En que biblioteca se encuentra la funcion htons? he buscado al respecto y me sale que usa la biblioteca <arpa/inet.h> pero parecia que se refería a linux.

trabajo en Eclipse compilador MinGW32, y me detecta la función, pero me suelen aparecer errores:

        - Function 'htons' could not be resolved
   - 'htons' was not declared in this scope)



2 *tomando en cuenta que dicha función retorna, y tiene como parametro una variable de tipo Uint16_t (o Uint32_t para htonl() ), debería utilizar ese tipo de variable en vez de los acostumbrados int y short y es lo mismo?


Saludos!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines