2016-07-24 110 views
0

我有一个包含WiFi芯片的MAC地址的6个元素的字节数组。如何将其转换为单个值。对于例如如果数组是:字节数组到

mac[0] = 208 
mac[1] = 181 
mac[2] = 194 
mac[3] = 193 
mac[4] = 114 
mac[5] = 219 

如何获得这样的值:208181194193114219这表示是基本上所有的数字级联。

我试着AND'ing个别MAC ID与0xFFh,然后位移他们左边,但我看到3250763216值。这是代码:

uint32_t deviceID = 0; 
for (int i = 0; i < 6; i++) 
{ 
    deviceID += (mac[i] & 0xFFh) << (8 * i); 
} 
Serial.print("Device ID : "); Serial.println(deviceID); 

回答

1

你可以这样做:

#include <iostream> 
#include <sstream> 

int main() { 
    std::stringstream ss; 


    int mac[] = {208,181,194,193,114,219}; 

    for (unsigned i = 0; i < sizeof mac/sizeof mac[0]; ++i) 
     ss << mac [i]; 

    int result; 
    ss >> result; 
    std::cout << result; //208181194193114219 
} 
+0

我需要知道如何在C这样做++。 – hpb

+0

对不起,请再次检查答案。 –