色々やりたいタイミングなのでopenFrameworksでbit値を使って曜日管理したいと思い、
C++全然触ったことないけど一生懸命調べた。
要件としては与えられた曜日設定に対して、本日が対象の曜日かを調べること。
日月火水木金土を0000000の7bitとして
1000001なら土日、0111110なら月〜金みたいな感じで
今日の曜日に対してフラグが立ってるかの関数を実装。
bool ofApp::CheckWeekday(unsigned short settingDay){
bool result = false;
bitset<7> bitsetWeeks{settingDay};
int current = pow( 2, 6 - ofGetWeekday());
bitset<7> bitsetCurrent{static_cast<unsigned short>(current)};
if ((int)(bitsetWeeks & bitsetCurrent).to_ulong() > 0){
result = true;
}
return result;
}
ofGetWeekdayが0=Sunday〜の対応だったので
要件を満たす形に変換したのが↓コレ
pow( 2, 6 - ofGetWeekday());
//日:64,月:32,火:16,水:8,木:4,金:2,土:1
この記事書いてる今日は火曜日なので
0010000
と変換出来る。
ここまでくればbitsetの論理積を取ってあげて
整数値に戻した値が0より大きければ対象曜日となる。。。
んだけどキャスト塗れでかっこ悪い…cppって難しいなぁ