2009-01-29 17 views

Respuesta

7

Las funciones htonl, htons, ntohl, ntohs se pueden usar para convertir órdenes de bytes locales y de red.

2

Creo que se puede encontrar con un problema de orden de bytes. Desde la página del manual:

Todas las direcciones de Internet se devuelven en orden de red (bytes ordenados desde de izquierda a derecha). Todos los números de red y las partes de direcciones locales se devuelven como valores enteros de orden de bytes de máquina.

+0

me he dado cuenta el orden de bytes es inversa . e0b83454 - 5434B8E0. ¡Gracias por el consejo! –

4

El resultado devuelto es correcto, los bytes están ordenados en orden de bytes de red

84 => 0x54 
52 => 0x34 
184 => 0xb8 
224 => 0xe0 
0xe0b83454 => 3770168404 
24

acabas de salir los bytes invertidos de lo que esperaba - que están en network byte order

3770168404 = 0xE0 B8 34 54  network byte order 
       |   | 
       \  /
       \ /
        \ /
        \/
        /\ 
       /\ 
       / \ 
       / \ 
       |  | 
1412741344 = 0x54 34 B8 E0  machine order 

Puede usar ntohl() convertir de orden de red a pedido de máquina.

0

comprobar cuidadosamente el siguiente enlace:

http: // msdn.microsoft.com/en-us/library/ms738563(VS.85).aspx

Cuestiones relacionadas