我有一个像这样的IP地址:
address = '192.168.1.11';
并需要将其转换为二进制格式
11000000 10101000 00000001 00001011
我对如何左移十进制数和使用 inet_addr 有一些想法,但不确定我将如何去做。
谢谢,我还是C的新手。
我有一个像这样的IP地址:
address = '192.168.1.11';
并需要将其转换为二进制格式
11000000 10101000 00000001 00001011
我对如何左移十进制数和使用 inet_addr 有一些想法,但不确定我将如何去做。
谢谢,我还是C的新手。
您可以使用该inet_addr(3)
函数将字符串转换为in_addr_t
,然后将其转换为二进制。没有将数字转换为二进制的标准库函数,但使用按位逻辑运算符自己操作非常简单。
有一个专门用于将文本 IP 转换为 32 位“longip”地址的套接字函数,但在这种情况下这可能是不必要的。一个简单的形式是使用解析它sscanf()
:
char ip[] = "192.168.1.11";
int n1, n2, n3, n4;
sscanf(ip, "%d.%d.%d.%d", &n1, &n2, &n3, &n4).
// Result:
// n1 = 192
// n2 = 168
// n3 = 1
// n4 = 11
我会这样做:
char *addrc = '127.0.0.1';
inet_addr_t addri = inet_addr(addrc);
__bswap_32(addri); /* ommit if network byte order == host order */
char addrb[40];
itoa(addri,addrb,2);
printf("%s = %s (binary)",addrc,addrb);