我试图在该区域找到可用"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,因此我从中获得一两个东西的引用代码是有效的。