0
我一次讀取一個字節(字符)的消息,我想根據它設置一個變量的值。 有沒有辦法連接字節然後使用轉換設置值?一次設置一個字節的變量內容
喜歡的東西:
mytype packet = (mytype) byteconcat;
如果我分辯字符串有一個額外的字節,這樣將是一個問題。
或者,我還可以創建變量並設置字節,因爲我收到它們?
我一次讀取一個字節(字符)的消息,我想根據它設置一個變量的值。 有沒有辦法連接字節然後使用轉換設置值?一次設置一個字節的變量內容
喜歡的東西:
mytype packet = (mytype) byteconcat;
如果我分辯字符串有一個額外的字節,這樣將是一個問題。
或者,我還可以創建變量並設置字節,因爲我收到它們?
你可以爲此使用聯合。
讓我們假設你通過網絡發送整數,在另一邊逐字節地捕獲整數。
你的聯盟可能是這樣的:
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;
}
這一切都取決於你的變量 – Jonas
的類型,你用指針算術familir?您可以將字節複製爲字符串並將其轉換爲您想要的任何類型。雖然這不是一個沒有問題的事情。您最好使用序列化程序,例如google協議緩衝區或boost :: serializer。 –
是的,你可以,如果你有一些指示經驗,它不會是一個問題。 Coz void指針可以投射到任何東西。 這裏是關於這個不錯的博客帖子: http://www.thegeekstuff.com/2014/06/cpp-convert-datatypes/ –