问题
Does anyone know how to get the IP address in decimal or hex from standard IP address format string ("xxx.xxx.xxx.xxx")?
I've tried to use the inet_addr() function but didn't get the right result.
I tested it on "84.52.184.224"
the function returned 3770168404 which is not correct (the correct result is 1412741344).
Thanks!
回答1:
The htonl, htons, ntohl, ntohs functions can be used to convert between network and local byte orders.
回答2:
You have just got the bytes reversed from what you expected - they are in network byte order
3770168404 = 0xE0 B8 34 54 network byte order
| |
\ /
\ /
\ /
\ /
/\
/ \
/ \
/ \
| |
1412741344 = 0x54 34 B8 E0 machine order
You could use ntohl() convert from network order to machine order.
回答3:
The returned result is correct, the bytes are ordered in network byte order
84 => 0x54
52 => 0x34
184 => 0xb8
224 => 0xe0
0xe0b83454 => 3770168404
回答4:
I think you may be running into a byte order issue. From the man page:
All Internet addresses are returned in network order (bytes ordered from left to right). All network numbers and local address parts are returned as machine byte order integer values.
回答5:
Carefully check the below link:
http : // msdn.microsoft.com/en-us/library/ms738563(VS.85).aspx
来源:https://stackoverflow.com/questions/491060/how-to-convert-standard-ip-address-format-string-to-hex-and-long