好长时间读者的网站,第一个问题,我不得不问,因为我无法在这里找到答案;也许我没有使用正确的搜索条件,或者我只是试图以一种完全模糊的方式来做到这一点=/如何将int转换为位?
我正在与一个Arduino和一些LED形成一个矩阵板,并试图获取文本/符号来显示它。为了实现这一点,我已经映射了一些数字(0 & 1开始)以及需要哪些像素来形成它们(每个像素将高5个,宽3个)。我一直在试图将这些存储在数组中,如下所示:
int displayLetters[2][4] = { // [2] = number of chars/digits contained in array, [4] = display width (3) + 1 blank column
{11111,10001,11111,00000}, // 0
{01001,11111,00001,00000} // 1
};
然后我创建了下面的(我以为会是一个简单的)功能对那些为0的数组和1的必要的“爆炸”,这然后迭代以确定LED应该打开还是关闭。
void convertToBits(int inputValue, int outputArray[]) {
int i = 0;
if (inputValue == 0) { // set all values of array to zero
for (i = 0; i < 5; i++) {
outputArray[4-i] = 0;
}
} else {
while (inputValue > 0) {
int digit = inputValue % 10;
outputArray[4-i] = digit; // 4-i to prevent digits being stored in reverse order
inputValue /= 10;
i++;
}
}
}
期待,对于displayLetters[1][0]
我会得到这样{0,1,0,0,1}的数组。但是当它到达convertToBits
它显示为513(我认为这是HEX值?)。
如果我把这个值作为刚刚1001
,(即一个正常工作的话),1
和0
(也能正常工作)分别为,那么它的行为预期。如果可能的话,我希望保持领先的零值,但如果不能这样做,我想我可能会失去它们。
我已经玩过各种数据类型,字符串,uint8_t,unsigned int等,我永远不能得到它来做我所需要的。
任何帮助非常感谢,我希望我已经包含足够的信息。我已经省略了其他代码,因为我认为要保持稳定并按预期行事,这些问题是由传递给它的函数/数据造成的。
非常感谢!
数字与0领先的代码被解释为八进制,不是小数! 01001(OCT)== 513(费尔南德斯) – tpr
嗨TPR,感谢您的答复,我认为可能会发生,但我从来没有牵制如何它在8个的或16的是否打算! –
这是C还是C++?请不要说两个!看起来像C. – Persixty