ConvertLengthToIpv4Mask(),不确定我是否正确?
ConvertLengthToIpv4Mask(), not sure did i get it correct?
我知道没有关于我在做什么的条目,但我相信有人熟悉 ConvertLengthToIpv4Mask()
。
调用ConvertLengthToIpv4Mask()
转换OnLinkPrefixLength
后得到子网掩码。
ConvertLengthToIpv4Mask()
给了我一些奇怪的数字“16777215”。
这部分我不确定我是否做对了,奇怪的数字“16777215”是网络部分的 ULONG 表示,当我将它转换为位时它给我“1111111111111111111111111”,然后我将它分成几部分8 位,我得到的结果是“255 255 255”
小部分代码:
PIP_ADAPTER_ADDRESSES pCurrAddresses = NULL;
PIP_ADAPTER_UNICAST_ADDRESS pUnicast = NULL;
ULONG subnet = 0;
PULONG mask = &subnet;
pUnicast = pCurrAddresses->FirstUnicastAddress;
if (pUnicast != NULL)
{
for (i = 0; pUnicast != NULL; i++)
{
struct sockaddr_in *sockaddr_ipv4;
sockaddr_ipv4 = (struct sockaddr_in *)pUnicast->Address.lpSockaddr;
printf("IPv4 pUnicast %s \n", inet_ntoa(sockaddr_ipv4->sin_addr));
ConvertLengthToIpv4Mask(pUnicast->OnLinkPrefixLength, mask);
pUnicast = pUnicast->Next;
}
}
好的,我的问题是我做对了吗?
如果没有?
任何提示都会很棒?
谢谢:)
初学者解决方案
你可以使用函数
union { ULONG ul; BYTE b[4]; } m;
ConvertLengthToIpv4Mask(netmask_length, &m.ul);
下一个:
yourString.Format(L"%u.%u.%u.%u", m.b[0], m.b[1], m.b[2], m.b[3]);
你的字符串 = 255.255.255.255
我知道没有关于我在做什么的条目,但我相信有人熟悉 ConvertLengthToIpv4Mask()
。
调用ConvertLengthToIpv4Mask()
转换OnLinkPrefixLength
后得到子网掩码。
ConvertLengthToIpv4Mask()
给了我一些奇怪的数字“16777215”。
这部分我不确定我是否做对了,奇怪的数字“16777215”是网络部分的 ULONG 表示,当我将它转换为位时它给我“1111111111111111111111111”,然后我将它分成几部分8 位,我得到的结果是“255 255 255”
小部分代码:
PIP_ADAPTER_ADDRESSES pCurrAddresses = NULL;
PIP_ADAPTER_UNICAST_ADDRESS pUnicast = NULL;
ULONG subnet = 0;
PULONG mask = &subnet;
pUnicast = pCurrAddresses->FirstUnicastAddress;
if (pUnicast != NULL)
{
for (i = 0; pUnicast != NULL; i++)
{
struct sockaddr_in *sockaddr_ipv4;
sockaddr_ipv4 = (struct sockaddr_in *)pUnicast->Address.lpSockaddr;
printf("IPv4 pUnicast %s \n", inet_ntoa(sockaddr_ipv4->sin_addr));
ConvertLengthToIpv4Mask(pUnicast->OnLinkPrefixLength, mask);
pUnicast = pUnicast->Next;
}
}
好的,我的问题是我做对了吗?
如果没有? 任何提示都会很棒?
谢谢:)
初学者解决方案
你可以使用函数
union { ULONG ul; BYTE b[4]; } m;
ConvertLengthToIpv4Mask(netmask_length, &m.ul);
下一个:
yourString.Format(L"%u.%u.%u.%u", m.b[0], m.b[1], m.b[2], m.b[3]);
你的字符串 = 255.255.255.255