ビットの上半分だけを取得するためにビットマスクを適用したい。だから、UINT32のためには、これを次のようになります。データタイプに応じたビットマスク
uint32_t version_part = oldID & 0xFFFF0000;
これは、データ型がハードコードされたときに、すべての罰金ですが、これはテンプレート機能だったと私はarbritaryデータ型を提供したい場合(uint8_t、uint16_t、... )ビットマスクのサイズを比例して(0xF0、0xFF00、...)、コンパイル時に調整することが大切です。
有限個のデータ型があるとしたら、if-case(静的な場合は?)を作ることができますが、それを行うにはより良い方法があるのだろうかと思っていました。
が有望に見えるコンパイル時にマスクを生成することができ、コンパイラを有効にチェックし、最適化! – KaiserJohaan
もっと見ると分裂はあまりありませんか?関数の2行目で、なぜSZをもう一度半分にする必要がありますか? – KaiserJohaan
@KaiserJohaanはい、そうです、修正しましょう。 –