ConvertLengthToIpv4Mask(),不确定我是否得到正确的
ConvertLengthToIpv4Mask(), not sure did i get it correct?
我知道没有我在做什么的条目,但我相信有人熟悉ConvertLengthToIpv4Mask()
。
我调用ConvertLengthToIpv4Mask()
转换OnLinkPrefixLength
得到子网掩码后。
ConvertLengthToIpv4Mask()
给出了一个奇怪的数字"16777215"。
这是我不确定是否正确的部分,奇怪的数字"16777215"是网络部分的ULONG表示,当我将其转换为比特时,它给了我"111111111111111111111111111111111111",然后我将其分成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]);
yourString = 255.255.255.255
相关文章:
- 检查输入是否不是整数或数字
- 代码在 CodeSignal 中工作不正确。不确定这是否是我的代码缺陷
- 是否允许从具有一些不确定值的对象分配
- 确定源文件是否不规律地依赖间接包括标准标头
- 如何确定名称和 lname 是否不在文件中
- 不确定是否在单链表中显示唯一数据
- 两条未签名短裤的乘法是否真的会导致不确定的行为
- [C++}不确定这是否可能
- 不确定我在提升日志中的线程 ID 是否正确
- 有没有办法确定日期/时间是否不存在
- 模板 (C++) - 不确定是否正确
- 确定 int 是否不为 0,没有 if 语句
- C++常量投射,不确定这是否安全
- 不确定是否规范化加载为每个2字节的双值
- 如何确定 give 属性是否不是从基类继承的?
- 指向从另一个结构创建的数组的指针(不确定措辞是否正确)C++
- ConvertLengthToIpv4Mask(),不确定我是否得到正确的
- 记忆的屏障,不确定我是否可以使用放松
- C++程序-不确定是否,我提供了正确的解决方案
- C++:不确定代码是否可多线程