これは通常の「バイナリから bcd へ」の質問ではありません。
組み込みデバイスには、1 ~ 7 の数字 (曜日) を次の形式で格納する 1 バイトがあります。
00000001 = 1
00000010 = 2
00000100 = 3
00001000 = 4
00010000 = 5
00100000 = 6
01000000 = 7
このバイトを読み取り、その内容 (1 から 7) を BCD に変換したいのですが、その方法がわかりません。
一連の if ステートメントを使用して総当たり攻撃できることはわかっています。
if(byte == B00000001)
{
answer = 1;
}
else
if(byte == B00000010)
{
answer = 2;
}
などですが、もっと良い方法があると思います。このデータは、リアルタイム クロックの 1 つのレジスタに格納されます。I2C読み取りを実行してこのバイトを取得しており、プログラムでバイトに読み取ります。このリアルタイム クロックのデータシートには、この特定のレジスタが上で概説したようにフォーマットされていることが明記されています。