【发布时间】:2014-01-19 02:00:37
【问题描述】:
这不是一个常规的“binary to bcd”问题,事实上,我真的不知道该怎么称呼我正在尝试做的事情!
嵌入式设备中有一个字节以下列格式存储数字 1 到 7(一周中的几天):
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;
}
等等,但我认为可能有更好的方法。该数据存储在实时时钟上的单个寄存器中。我通过执行 I2C 读取来获取此字节,并将其读入程序中的一个字节。此实时时钟的数据表指定此特定寄存器的格式如我上面所述。
【问题讨论】:
-
你有没有尝试过?
-
我知道我可以用一系列 if 语句强制它 if(byte == 00000001) answer = 1;如果(字节== 00000010)答案= 2;等等,但我认为可能有更好的方法。此数据存储在实时时钟上的单个寄存器中
-
提示:你有二的升幂
-
@EdHeal: "单字节"
-
@DylanCrockern 01000000b 不是 7
标签: c++ one-hot-encoding