我想在这个区域找到可用的“Wi_Fi”的MAC地址但我收到错误的MAC地址(至少我确定这里有一个接入点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
我也改变了数字顺序,但没有... 谁有人告诉我我的问题在哪里? 谢谢 此致
答案 0 :(得分:1)
你的代码没有多大意义。
您在之前致电MyScanResults = WFScanList(i);
甚至声明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,因此我从中选择了一两件事的this reference code是有效的。