2017-03-29 49 views
0

我一次讀取一個字節(字符)的消息,我想根據它設置一個變量的值。 有沒有辦法連接字節然後使用轉換設置值?一次設置一個字節的變量內容

喜歡的東西:

mytype packet = (mytype) byteconcat; 

如果我分辯字符串有一個額外的字節,這樣將是一個問題。

或者,我還可以創建變量並設置字節,因爲我收到它們?

+0

這一切都取決於你的變量 – Jonas

+0

的類型,你用指針算術familir?您可以將字節複製爲字符串並將其轉換爲您想要的任何類型。雖然這不是一個沒有問題的事情。您最好使用序列化程序,例如google協議緩衝區或boost :: serializer。 –

+0

是的,你可以,如果你有一些指示經驗,它不會是一個問題。 Coz void指針可以投射到任何東西。 這裏是關於這個不錯的博客帖子: http://www.thegeekstuff.com/2014/06/cpp-convert-datatypes/ –

回答

1

你可以爲此使用聯合。

讓我們假設你通過網絡發送整數,在另一邊逐字節地捕獲整數。

你的聯盟可能是這樣的:

union Data { 
    unsigned char bytes[4]; 
    int val; 
} 

像這樣的代碼:

bool read(Data& outBuff, int& offset, unsigned char receivedByte) 
{ 
    outBuff.bytes[offset++]= receivedByte; 

    bool readyToRead = offset >= 4; 
    if(readyToRead) {offset=0;} 

    return readyToRead; 
}