0

我有一个像这样的IP地址:

address = '192.168.1.11';

并需要将其转换为二进制格式

11000000 10101000 00000001 00001011

我对如何左移十进制数和使用 inet_addr 有一些想法,但不确定我将如何去做。

谢谢,我还是C的新手。

4

3 回答 3

5

您可以使用该inet_addr(3)函数将字符串转换为in_addr_t,然后将其转换为二进制。没有将数字转换为二进制的标准库函数,但使用按位逻辑运算符自己操作非常简单。

于 2013-04-18T02:19:46.533 回答
2

有一个专门用于将文本 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
于 2013-04-18T02:20:58.557 回答
1

我会这样做:

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);
于 2019-08-27T03:53:15.947 回答