2011-04-27 43 views
0

我正在使用客戶端服務器應用程序,我需要從客戶端向服務器發送6字節MAC ID(FFF000 - FFF1FF)。 我想知道如何最好地在C++中表示。6字節MACID的表示

我想將其聲明爲unsigned long,然後將其隱藏在6個字節中併發送給服務器。

這是正確的做到這一點。 任何其他選擇,請建議。

+0

爲什麼它必須被「轉換爲十六進制」發送到服務器?十六進制,十進制,八進制,base-64等僅僅是相同數據的不同「視圖」(具有不同符號的表示)。 – 2011-04-27 05:55:41

+0

對不起,它應該6個字節,而不是十六進制 – 2011-04-27 05:57:35

+2

只需使用一個64位變量(一個unsigned long不一定是它 - 也許是「long long」或「int64_t」?參見[int,long等的大小](http: //stackoverflow.com/questions/589575/c-size-of-int-long-etc)),只發送/使用低6字節? – 2011-04-27 06:05:54

回答

1

我不認爲我會爲此使用整數類型,因爲我們不會將該值視爲數字。我將它表示爲一個6字節的序列。一些可能性:

unsigned char macid[6]; 
typedef unsigned char macid[6]; 
struct macid { 
    unsigned char data[6]; 
}; 

但最終,我可能會選擇:

std::tr1::array<unsigned char, 6> macid; 
send(serverFd, &macid[0], macid.size()); 
+0

'std :: tr1 :: array <>'對於短期解決方案(甚至是'macid'類的內部實現)來說很酷。但是,如果有一些命名操作需要執行「macid」值,我肯定會選擇類解決方案。 – 2011-04-27 18:43:37

相關問題