我有一个IP地址,像这样:IP地址为二进制用C
address = '192.168.1.11';
,并需要将其转换成其二进制格式
11000000 10101000 00000001 00001011
我对如何leftshift小数的一些想法数量和使用inet_addr,但不知道我会如何去做。
谢谢,我还是新来C.
我有一个IP地址,像这样:IP地址为二进制用C
address = '192.168.1.11';
,并需要将其转换成其二进制格式
11000000 10101000 00000001 00001011
我对如何leftshift小数的一些想法数量和使用inet_addr,但不知道我会如何去做。
谢谢,我还是新来C.
有一个专门用于将文本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
可以使用inet_addr(3)
函数将字符串转换为in_addr_t
,然后将其转换成二进制。没有标准库函数可以将数字转换为二进制,但使用按位逻辑运算符可以非常简单。
我已经看过整个文档,但不知道如何将in_addr_t转换为二进制文件?感谢您的建议。 – 2013-04-18 02:30:31
'inet_addr'以网络字节顺序将字符串转换为32位int,但没有迹象表明OP需要这样做,并且很难以机器(endian)独立的方式使用它。 – 2013-04-18 02:36:25
你想打印的二进制字符串,或者只是有可用的4个数字分别?困难的部分是将一个8位数字转换为一串二进制数字;标准C中没有简单的功能来做AFAIK。 – 2013-04-18 02:26:40
@JonathanLeffler我怀疑OP实际上只是想将它转换为本地整数类型,而不是“二进制格式”。大多数人对表示的概念感到困惑。 – 2013-04-18 02:31:22
你不想解析“通过”'。'; '。'告诉你什么时候你到了一个数字的末尾。如果您要发布一些代码,您可以获得更好的帮助,以便人们可以看到您遇到问题的位置。 – 2013-04-18 02:40:52