首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >itoa的问题

itoa的问题
EN

Stack Overflow用户
提问于 2014-03-31 19:45:24
回答 1查看 368关注 0票数 0

我正在尝试从微控制器向PC发送一些数据。数据是来自不同端口的10位ADC转换(例如从0到1023的数字)。我已经将这个数字保存为整数,现在我想使用itoa或类似的函数将其转换为ascii字符串。我的问题是,我在查找itoa函数的文档时遇到了一些麻烦。例如,如果我从AD转换中收到数字"1011“。然后我可以调用itoa,如下所示

代码语言:javascript
复制
itoa(AD_value,ADC_string,10); //itoa("value", char* destination, base) 

在ADC_string中的结果将是"1 0 1 1 '\0'“,例如1011;但是假设我从AD转换中得到的是数字5,那么结果将是"5 '\0‘Null Null Null”(如果我已经理解itoa如何正确工作的话)。我希望结果是"0 0 0 5 '\0'“。这样做的原因是,我希望将结果放在不同位置的大字符串中。e.g

代码语言:javascript
复制
large_string[0]=id_PC;
large_string[1]=ADC_string[0]; //start of ascii string of the latest value from a port
large_string[2]=ADC_string[1];  
large_string[3]=ADC_string[2];
large_string[4]=ADC_string[3];

对于另一个端口(在索引5和6的large_string中还有其他东西)

代码语言:javascript
复制
large_string[7]=ADC_string[0]; //start of ascii string of the latest value from another port
large_string[8]=ADC_string[1];  
large_string[9]=ADC_string[2];
large_string[10]=ADC_string[3];

换句话说,我希望根据我上面的例子在large_string中有以下内容。

代码语言:javascript
复制
large_string[0]=id_PC
// an AD conversion from the first port is stored at index 1-4
large_string[1]='1'  
large_string[2]='0'
large_string[3]='1'
large_string[4]='1'
large_string[5]=' ' 
large_string[6]=' '
// a new AD conversation from the second port is stored at index 7-10
large_string[7]='0'
large_string[8]='0'
large_string[9]='0' 
large_string[10]='5'
large_string[11]='\0'

(我一次只在一个端口进行AD转换,这就是我可以重用ADC_string的原因)。large_string稍后将被发送到PC,这就是我要避免意外字符串终止符的原因。

有没有人知道如何以一种好的方式实现这一点?非常感谢您的建议!

EN

回答 1

Stack Overflow用户

发布于 2014-03-31 19:57:41

只需使用snprintfitoa不会为您添加填充:

代码语言:javascript
复制
char tmp_str[4+1];
snprintf(tmp_str, sizeof(tmp_str), "%04d", value);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22760732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档