2017-03-29 3 views
0

私は一度に1バイト(char)のメッセージを読んでおり、それに基づいて変数の値を設定したいと思います。 バイトを連結してキャストを使用して値を設定する方法はありますか?一度に可変内容を1バイトに設定する

ような何か:

mytype packet = (mytype) byteconcat; 

それが問題になるので、私はrigth文字列が余分なバイトを持っていた場合。

代わりに変数を作成して、受け取ったバイトを設定することはできますか?

+0

それはすべてがあなたの変数 – Jonas

+0

の種類によって異なりますが、ポインタ算術演算でfamilirていますか?バイトを文字列としてコピーし、必要な任意の型にキャストすることができます。これは問題のないことではありませんが。あなたは、Googleプロトコルバッファやブースト::シリアライザのようなシリアライザを使う方が良いでしょう。 –

+0

はい、あなたはポインタでいくつかのexpireienceを持っていれば問題はありません。 Coz voidポインタは何にでもキャストできます。 そしてこれについての良いblogpostは http://www.thegeekstuff.com/2014/06/cpp-convert-datatypes/ –

答えて

1

あなたはそのためにユニオンを使用できます。

ネット上で整数を送信し、もう一方の側で整数を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; 
} 
関連する問題