我有一个连接到我正在编程的处理器的显示器。它是气象站的一部分,我需要显示温度和其他数据。
但是有一个问题。将整数写入显示是不可能的,因为显示器自己的控制器使用8位数据总线来确定将写入哪个字符。
请注意,我编写的函数DisplayPrint
采用了一系列字符。然后分析该数组和';' character确定数组停止的位置。我会做
DisplayPrint("Temperature: ;")
以便在显示屏上写下“温度:”。
以下是问题:如何发送整数并返回字符数组?
实施例:
函数称为parseChar
int x = 100;
char string[255];
string = parseChar(x);
x
进入parseChar
,parseChar
返回一个看起来像的数组;
string[0] = '1'
string[1] = '0'
string[2] = '0'
string[3] = ';'
string[4 to 254] = *don't care, can be anything*
我已经坐了两天,根本没有成功。
这不是为电脑编程。
我正在使用连接到Arduino DUE的J-tag,它连接到带控制器的人机界面。使用 IAR Embedded Workbench
完成编程答案 0 :(得分:3)
您可以使用snprinf。
而不是使用parseCharsnprintf(string, sizeof(string), "%d;", x);
如果您希望缓冲区的其余部分为0
s,请事先用memset清除它。
memset(string, 0, sizeof(string));
答案 1 :(得分:2)
将字符串设置为您的数字+分号:
snprintf(string, sizeof(string), "%d;", x);
答案 2 :(得分:0)
您可以使用snprintf
(http://linux.die.net/man/3/snprintf),如其他答案所示。
但是,如果你想知道将十进制转换为字符串的逻辑,你应该考虑在10上使用mod操作。例如:
前)
2345 % 10 = 5
2345/10 = 234 (integer)
然后)
234 % 10 = 4
234 / 10 = 23
然后)
23 % 10 = 3
23 / 10 = 2
然后)
2 % 10 = 2
2 / 10 = 0 (stop)
因此,你只需要一个while循环,当除法为0时将停止。要将int数字转换为chars,你需要str[i] = 2 + '0';
,例如{更多关于https://stackoverflow.com/questions/1114741/how-to-convert-int-to-char-c)。