在C中将int转换为char的问题

时间:2015-02-25 10:23:18

标签: c stm32 cortex-m3

我为调试目的编写了一个小函数,它通过USB将字符串发送到终端:

void localprint(char* msg){
if(strlen(msg) > 60){
            usb_sendData(msg,60);
}
else usb_sendData(msg,strlen(msg));

} 该函数适用于以下字符串:

localprint(" I'm a test" ), 

消息显示在终端上。 现在我想在终端上获得adcValue这是int,因为我已尝试过:

char t= (char)(((int)'0')+getADCValue(9)); // getting the ADC value of 0th channel 
localprint(&t);

这种做法根本不起作用,我也尝试过:

char t= (char) getADCVAlue(9);
localprint(&t);

它既不起作用也不起作用。所以我的问题是我怎么能这样做。我使用的是uC STM32f10xx和ARM gcc。 谢谢你的提示

2 个答案:

答案 0 :(得分:2)

在不了解可能的整数范围的情况下,这样的事情会起作用:

char buffer[32];
sprintf(buffer, "%d", getADCVAlue(9));
localprint(buffer);

既然你做了0+,我假设它是一位数,所以你可以去

char buffer[2];
buffer[0] = '0' + getADCVAlue(9);
buffer[1] = '\0';
localprint(buffer);

答案 1 :(得分:0)

John3136 的答案可以正常使用sprintf替换一些轻量级的实现,例如来自elm-chanxsprintf,我发现它对嵌入式非常有帮助节目。或者,如果要使用_sbrk,则必须为sprintf等系统调用设置一些存根。

我无法评论来自 John3136 的解决方案,因为我没有足够的声誉。