テンプレートの特殊化

C++テンプレートテクニックを買ってお勉強。
テンプレートの特殊化を利用して、いままで使っていたライブラリを一部書き換え。
構築した部分は問題なく実装できたが、いままでやっていたことができなくなった・・・


どちらともいえない、どちらともいえない。


バイト列への便利なアクセス関数なのだが、いままでいろんな処理をぐちゃぐちゃしていた。
だれかの作った関数を理解せずに改良していた。
・△ビットから○ビットまでをunsigned longとして取得
・△ビットから○ビットまでをlongとして取得
・3バイトをunsigned longとして取得


はい。。ビット操作が苦手です。
情報処理試験の1章、2章あたりが苦手です。


予想以上に簡単な処理になっちゃった。
いままでのコードはなんだったんだ・・・


5バイト以上のバイト列にも簡易アクセスしたいな・・・
これは意外とむずかしい。


コンパイル時に処理を解決することで高速に処理が終わるようになった

unsinged char value = 0xAA; // 10101010
unsigned long bit6_3 = GetBitsUnsignedLongByPos<1,5,3>(&b); // 101

こんな風に書けるようになった。
コンパイル時にビット番号が解決できていないとだめ。
ほとんど大丈夫だけど、ちょっとダメなパターンが。。。