2013-11-26 41 views
4

您好,我正在使用帶有adafruit盾牌的Arduino UNO來顯示分數值,但用於顯示分數的函數只接受char *值,分數本身可以佔用多達6個數字(000,000至999,999)。我曾嘗試使用衝刺(),但我沒有運氣,因爲屏幕會閃爍像瘋了似的。我相信問題是chars只能保存一定數量的字節,不能適應32位int,但我認爲他們是解決這個問題的方法。繪製文本是盾牌用來在屏幕上繪製輸入爲char *,顏色代碼,大小,x像素,y像素的函數。如果有人可以請幫我轉換這兩種類型請讓我知道。如果他們是替代品,也會幫助我。我如何將uint32_t轉換爲char *類型

我的代碼:

char* textToWrite; 
uint32_t currentScore = 0; 
uint32_t highScore = 0; 
highScore = currentScore; 
sprintf(textToWrite,"%d.%d.%d.%d\0", currentScore);//sprint f not working properly right now 
drawText(textToWrite, ST7735_WHITE, 1, 100, 10); 

我一直在使用也嘗試:

sprintf(textToWrite,"%u", currentScore); 
+0

你確實是分配的'textToWrite'空間,你叫'sprintf'在什麼地方? –

+0

除此之外,您可能想了解按位運算符,例如右移'>>',按位和'&'。 –

+0

你不必添加終結符,'sprintf'會爲你做。 –

回答

6
char textToWrite[ 16 ]; 
uint32_t currentScore = 42; 
// as per comment from LS_dev, platform is int 16bits 
sprintf(textToWrite,"%lu", currentScore); 
+0

如果分數達到999,999那麼接近,然後屏幕打印出16,959 – blu

+0

Arduino'int'是16位。要打印32位整數,必須使用'%lu'。 –

+0

@LS_dev確定這個工程當我使用%lu謝謝LS_dev和manuell – blu

相關問題