2016-07-24 152 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

對不起,請再次檢查答案。 –