Pregunta: al convertir la dirección IP 192.168.115.67 a un número, ¿Se hace así:
192 * 256 + 168 * 256 * 256 + 67 * 256 = 3232265027
o como esto:
192 * 256 + 168 * 256 + 115 * 256 + 67 * 256 = 1131653312
Encuentro ambas variantes en línea, y francamente no importa siempre que haga toda la comparación del rango de IP interno usando la misma variante del proceso de conversión. Pero quiero para calcular el V6 IP desde la dirección IPv4, y parece que ambas variantes son en la web ... que resulta en diferentes direcciones IPv6, y sólo uno puede ser correcta ...
uso el 1131653312 variante, como 1131653312 es la variante que vi .NET dándome, pero 3232265027 es la variante que utilicé cuando lo hice en C++, y esa es también la variante que encuentro en la web para la conversión de IPv4 a IPv6, y que utilicé antes Vi que .NET usa la variante 1131653312 ...la conversión de una dirección IP a un número:
Respuesta
El método que resulta en 3232265027
debe ser correcta, ya que el primer número se almacena en los bits más altos de la parte de la compatibilidad IPv4 de IPv6:
0000: 0000: 0000: 0000: 0000: ffff: AABB: CCDD
donde
AA = 192
BB = 168
CC = 0
DD = 1
etc.
http://wikipedia.org/wiki/IPv6
Además, no se puede tener un 256
en una dirección IP. Los valores son 0 - 255 cada uno.
Los números se envían en orden big-endian a través del cable, que es igual a la forma en que están escritos (192 es el byte más significativo). Por lo tanto, el primer número es el "correcto". La otra variante es cómo se interpretarán los mismos bytes en una arquitectura little-endian, de ahí el comportamiento .Net.
Habiendo dicho todo eso, realmente no estoy seguro de cuál es la pregunta, por lo que solo puedo esperar que esta exposición sea una especie de respuesta.
es definitivamente el primero. puede hacer ping y ver cómo la utilidad ping lo convierte a una notación a.b.c.d. si va a hacer esta conversión, recomiendo la expresión: (a << 24) | (b << 16) | (c << 8) | d
¿por qué downvoting? – Andrey
Realmente no se puede decir eso; depende de la endianidad de su plataforma. OK, bueno, supongo que puedes, ya que .NET no se transporta exactamente a un montón de plataformas diferentes. Pero, en principio, no puedes decir eso. –
@ T.E.D. como número se verá como 3232265027. La segunda pregunta es cómo se almacena en la memoria, y ese punto no lo mencioné en absoluto. – Andrey
La diferencia tiene que ver con endianness. Lo está almacenando en un número entero, pero diferentes procesadores tienen diferentes ordenamientos de bytes para sus enteros (primero grande o pequeño). Sin embargo, ese número tiene que salir a través de la línea, por lo que IP tiene un orden específico que necesita los bytes transferidos. Ese orden se ve diferente a las máquinas bigendian y littleendian.
No sé mucho sobre el hardware .net cross diferente, sin embargo, ¿no se supone .net que se abstraiga el byte para enteros? –
- 1. conversión de una dirección IP a nombre de host
- 2. ¿Alguien puede suplantar una dirección IP a cualquier número?
- 3. Convirtiendo un int a una dirección IP
- 4. Geocodificar una dirección IP?
- 5. ¿Cómo encontrar el número de puerto de la dirección IP?
- 6. ¿Cómo compararías la dirección IP?
- 7. expressjs enlazar a una dirección IP específica
- 8. Enlazar IIS Express a una dirección IP
- 9. Entero a la dirección IP - C
- 10. Python: obtenga la dirección IP local utilizada para enviar datos IP a una dirección IP remota específica
- 11. Cómo obtener la dirección IP de sockaddr
- 12. Cómo determinar si una dirección IP pertenece a un país
- 13. Dirección IP en un MaskedTextBox?
- 14. RegEx para una dirección IP
- 15. Obteniendo la dirección IP local
- 16. Dirección IP de sk_buff
- 17. Obtenga la dirección IP de la máquina
- 18. [NSNetservice] a IP cadena de dirección
- 19. Determinación de la dirección IP y el puerto de una conexión TCP/IP entrante en Erlang
- 20. ¿Cómo obtener la dirección IP?
- 21. Seleccionar una dirección IP de multidifusión
- 22. Dirección IP inyección SQL
- 23. .Net Dirección IP IPv4
- 24. ¿Cómo obtengo una dirección IP pública de un teléfono móvil?
- 25. cURL dirección IP
- 26. Obtener la dirección IP de los visitantes
- 27. Obtener mi dirección de IP
- 28. Dirección IP en Silverlight
- 29. Generar dirección IP aleatoria
- 30. dirección IP no enrutable
La pregunta es, ¿cómo el IP v6 (correcto) busca el IP v4 dado? –
Quandary, modifique su respuesta para que quede claro. –