【发布时间】:2014-10-07 00:16:56
【问题描述】:
我有一个带有 IP 地址的 in_addr 结构,我正在尝试将其从点分十进制转换为二进制值。我真正需要做但无法工作的事情是
destn = inet_addr(inet_ntoa(addr));
其中addr 是in_addr_t 变量。我知道这违反了语法,但是当我更仔细地遵循语法时,我得到一个错误:
storage size of ‘addr’ isn’t known.
【问题讨论】:
-
您是指文本“11000000101010000000000000000001”意义上的二进制值还是 32 位无符号整数意义上的二进制值?
-
抱歉,应该指定 -- 在 32 位无符号整数的意义上。
-
什么是
dotted decimal?举个例子,把你的问题编辑成可读的形式,不要输入随机信息,它可能会关闭 -
@chouaib Dotted decimal 是表示 IP 地址的标准形式。仅仅因为你不知道某事并不意味着它的“随机信息”。在告诉 OP 修改他的问题之前做你的研究。
-
@s_frank “点分十进制”只是以文本方式表示 IPv4 地址的一种方式。另一个是 32 位十六进制值,一串 1 和 0 是另一个。如果您有一个
in_addr结构,那么您已经在内存中获得了“二进制”形式的值。你接下来实际上想用这个值完成什么?打印出来?我认为您需要显示更多代码。这个问题现在无法回答。
标签: c linux network-programming