好長時間讀者的網站,第一個問題,我不得不問,因爲我無法在這裏找到答案;也許我沒有使用正確的搜索條件,或者我只是試圖以一種完全模糊的方式來做到這一點=/如何將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