在 C 中将 int 转换为 char 的问题
Issues with converting int to char in C
我写了一个用于调试的小函数,它通过 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。
感谢任何提示
在不知道可能的整数范围的情况下,像这样的东西会起作用:
char buffer[32];
sprintf(buffer, "%d", getADCVAlue(9));
localprint(buffer);
既然你做了 0+
,我假设它是一位数,所以你可以去
char buffer[2];
buffer[0] = '0' + getADCVAlue(9);
buffer[1] = '[=11=]';
localprint(buffer);
来自 John3136 的答案如果您将 sprintf
替换为一些轻量级实现,例如来自 elm-chan 的 xsprintf
,我会很好地工作发现在嵌入式编程中非常有帮助。或者,如果您想使用 sprintf
.
,则必须有一些系统调用存根,例如 _sbrk
我无法评论来自 John3136 的解决方案,因为我没有足够的声誉。
我写了一个用于调试的小函数,它通过 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。 感谢任何提示
在不知道可能的整数范围的情况下,像这样的东西会起作用:
char buffer[32];
sprintf(buffer, "%d", getADCVAlue(9));
localprint(buffer);
既然你做了 0+
,我假设它是一位数,所以你可以去
char buffer[2];
buffer[0] = '0' + getADCVAlue(9);
buffer[1] = '[=11=]';
localprint(buffer);
来自 John3136 的答案如果您将 sprintf
替换为一些轻量级实现,例如来自 elm-chan 的 xsprintf
,我会很好地工作发现在嵌入式编程中非常有帮助。或者,如果您想使用 sprintf
.
_sbrk
我无法评论来自 John3136 的解决方案,因为我没有足够的声誉。