如何将32位整数值转换为IP地址?
我有一个int value=570534080
,想将其转换为192.168.1.34
。
#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main(void) {
int value=570534080;
struct in_addr addr = {value};
printf( "%s", inet_ntoa( addr ) );
return 0;
}
对于Windows,请使用#include <winsock2.h>
570534080
,可以拆分成四个8位无符号整数,它们正好是IP地址。int value = 570534080; // which is 0x2201a8c0 (0x22, 0x01, 0xa8, 0xc0)
unsigned char *ip = &value;
/* then */
ip[0] == 192;
ip[1] == 168;
ip[2] == 1;
ip[3] == 34;
inet_ntoa
函数。 - David Heffernan