c-接收到的可用WiFi网络的MAC地址不正确



我试图在该区域找到可用"Wi_Fi"的MAC地址,但我收到了错误的MAC地址(至少我确信这里有1个接入点MAC地址与我收到的地址不相同)。

我的代码是:

       char MAC[64];
         int len=sizeof(MAC)/sizeof(int);
         int i;
            for(i=1;i<len;i++){
            MyScanResults = WFScanList(i);
           //unsigned long long testMac =MyScanResults.bssid[i];
           unsigned char* pTestMac = (unsigned char*)&MyScanResults.bssid[i];
           sprintf(MAC, "%02x:%02x:%02x:%02x:%02x:%02x",
           (unsigned)pTestMac[6],
           (unsigned)pTestMac[5],
           (unsigned)pTestMac[4],
           (unsigned)pTestMac[3],
           (unsigned)pTestMac[2],
           (unsigned)pTestMac[1]
           );

我期望的答案是:

bssid:00:12:17:C6:F4:36

但每次我收到这样的地址,有时这个地址也会改变:

MAC:73:6D:65:36:F4:C6

我也改变了数字的顺序,但什么都没有。。。有人告诉我我的问题在哪里吗?谢谢问候

您的代码没有多大意义。

在甚至声明i之前调用MyScanResults = WFScanList(i);。此外,来自1的循环和索引也是非常可疑的。

我还认为i的使用自始至终都很奇怪,将指针计算到MyScanResults.bssid中,有效地对其进行切片,这是不对的。

我认为你的循环应该是这样的:

for(i=0; i < WFNetworkFound; i++)
{
    const tWFNetwork myScanResults = WFScanList(i);
    sprintf(MAC, "%02x:%02x:%02x:%02x:%02x:%02x",
       myScanResult.ssid[0],
       myScanResult.ssid[1],
       myScanResult.ssid[2],
       myScanResult.ssid[3],
       myScanResult.ssid[4],
       myScanResult.ssid[5]);

这假设您已经运行了扫描,因此全局变量WFNetworkFound已经更新。它还假设您使用的是openPicus,因此我从中获得一两个东西的引用代码是有效的。

最新更新