Keil C 字符串显示数字问题

望者无敌 2016-12-08 02:29:32
比如,我收到两个uchar,分别是0x0c和0x0d。
我想把这两个uchar和小数点一起组成字符串,显示0x0c和0x0d的十进制。组成"12.13"这种形式。
现在是把它们放在一个uchar数组中,但是最后字符串显示的却是0x0c 0x0d的ASCII码。
请大神指教!!!
...全文
651 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
望者无敌 2016-12-09
  • 打赏
  • 举报
回复
引用 14 楼 raining 的回复:
或者,参考这个帖子 http://blog.csdn.net/zhanglianpin/article/details/44779009 把%d改为%bd试试 sprintf(sensorValueData,"%bd.%bd",temp[0], temp[1]);
谢谢,我先试一下!
raining 2016-12-09
  • 打赏
  • 举报
回复
或者,参考这个帖子 http://blog.csdn.net/zhanglianpin/article/details/44779009 把%d改为%bd试试 sprintf(sensorValueData,"%bd.%bd",temp[0], temp[1]);
raining 2016-12-09
  • 打赏
  • 举报
回复
引用 12 楼 wangzhewudi10220831 的回复:
[quote=引用 11 楼 raining 的回复:] [quote=引用 10 楼 wangzhewudi10220831 的回复:] uchar sensorValueData[10]; //这是定义的一个全局变量数组 void transferData(uchar data1,uchar data2,uchar str) { uchar temp[]={0x0c,0x0d};//先用0x0c,0x0d代替data1,data2测试一下 sprintf(sensorValueData,"%d.%d",temp[0],temp[1]); } 经过这个函数处理之后,sensorValueData的值变成,
输出的小数点前面的 3085,正好就是 0x0c0d。 可以考虑2楼的做法。 [/quote] 我是想最后得到“12.13”这样的字符串,因为这样才能在显示屏上正常显示出来!但是现在老是不行啊[/quote] 考虑2楼的做法,试试这样。 sprintf(sensorValueData,"%d.%d",temp[0] & 0xff, temp[1] & 0xff);
望者无敌 2016-12-09
  • 打赏
  • 举报
回复
引用 11 楼 raining 的回复:
[quote=引用 10 楼 wangzhewudi10220831 的回复:] uchar sensorValueData[10]; //这是定义的一个全局变量数组 void transferData(uchar data1,uchar data2,uchar str) { uchar temp[]={0x0c,0x0d};//先用0x0c,0x0d代替data1,data2测试一下 sprintf(sensorValueData,"%d.%d",temp[0],temp[1]); } 经过这个函数处理之后,sensorValueData的值变成,
输出的小数点前面的 3085,正好就是 0x0c0d。 可以考虑2楼的做法。 [/quote] 我是想最后得到“12.13”这样的字符串,因为这样才能在显示屏上正常显示出来!但是现在老是不行啊
raining 2016-12-09
  • 打赏
  • 举报
回复
引用 10 楼 wangzhewudi10220831 的回复:
uchar sensorValueData[10]; //这是定义的一个全局变量数组 void transferData(uchar data1,uchar data2,uchar str) { uchar temp[]={0x0c,0x0d};//先用0x0c,0x0d代替data1,data2测试一下 sprintf(sensorValueData,"%d.%d",temp[0],temp[1]); } 经过这个函数处理之后,sensorValueData的值变成,
输出的小数点前面的 3085,正好就是 0x0c0d。 可以考虑2楼的做法。
望者无敌 2016-12-09
  • 打赏
  • 举报
回复
uchar sensorValueData[10]; //这是定义的一个全局变量数组
void transferData(uchar data1,uchar data2,uchar str)
{
uchar temp[]={0x0c,0x0d};//先用0x0c,0x0d代替data1,data2测试一下
sprintf(sensorValueData,"%d.%d",temp[0],temp[1]);
}
经过这个函数处理之后,sensorValueData的值变成,

望者无敌 2016-12-09
  • 打赏
  • 举报
回复
引用 14 楼 raining 的回复:
或者,参考这个帖子 http://blog.csdn.net/zhanglianpin/article/details/44779009 把%d改为%bd试试 sprintf(sensorValueData,"%bd.%bd",temp[0], temp[1]);
谢谢,已经搞定啦,就是要用这个%bd才行
paschen 2016-12-08
  • 打赏
  • 举报
回复
引用 8 楼 wangzhewudi10220831 的回复:
[quote=引用 3 楼 paschen 的回复:]

	char str[100];
	unsigned char uch[] = {0x0c, 0x0d};
	sprintf(str, "%u.%u", uch[0], uch[1]);
str中内容为你要的字符串
uchar temp[]={0x0c,0x0d}; sprintf(sensorValueData,"%u.%u",temp[0],temp[1]); sensorValueData是一个空数组,大小为10. 但是最后sensorValueData的值不对呢 [/quote] 你变量什么类型,给出你完整代码
望者无敌 2016-12-08
  • 打赏
  • 举报
回复
引用 3 楼 paschen 的回复:

char str[100];
unsigned char uch[] = {0x0c, 0x0d};
sprintf(str, "%u.%u", uch[0], uch[1]);


str中内容为你要的字符串

uchar temp[]={0x0c,0x0d};
sprintf(sensorValueData,"%u.%u",temp[0],temp[1]);
sensorValueData是一个空数组,大小为10.
但是最后sensorValueData的值不对呢
望者无敌 2016-12-08
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
作为一个C程序员,对 scanf,sscanf,fscanf printf,sprintf,fprintf 这类函数的用法,还是要做到“拳不离手,曲不离口”的。
谢谢,我总结一下!!!
望者无敌 2016-12-08
  • 打赏
  • 举报
回复
引用 3 楼 paschen 的回复:

	char str[100];
	unsigned char uch[] = {0x0c, 0x0d};
	sprintf(str, "%u.%u", uch[0], uch[1]);
str中内容为你要的字符串
谢谢,我先试一下
赵4老师 2016-12-08
  • 打赏
  • 举报
回复
作为一个C程序员,对 scanf,sscanf,fscanf printf,sprintf,fprintf 这类函数的用法,还是要做到“拳不离手,曲不离口”的。
望者无敌 2016-12-08
  • 打赏
  • 举报
回复
引用 2 楼 ipqtjmqj 的回复:
uchar recv[2]; printf("%u.%u", recv[0] & 0xff, recv[1] & 0xff);
我是想输出到字符串中,然后“12.13”这种形式,不知道可不可以呢?
paschen 2016-12-08
  • 打赏
  • 举报
回复

	char str[100];
	unsigned char uch[] = {0x0c, 0x0d};
	sprintf(str, "%u.%u", uch[0], uch[1]);
str中内容为你要的字符串
ipqtjmqj 2016-12-08
  • 打赏
  • 举报
回复
uchar recv[2]; printf("%u.%u", recv[0] & 0xff, recv[1] & 0xff);
望者无敌 2016-12-08
  • 打赏
  • 举报
回复
帮帮忙啦!!!!!
减少库的使用,解决那些需要小代码量,但苦恼于没有简易的字符串处理函数的郁闷 char *itoa_private(int val, char *buf, unsigned radix);//整数转字符串 int my_isdigit(int ch);//判断字符是否为数字 long long StrToInt(const char *s,int sign);//字符串数字 int atoi_32(const char *s);//将字符串str转换为32位整型,其正数的最值为0x7FFFFFFF,负数的最小值为0x80000000,考虑数字会溢出的情况 void LettersChange(unsigned char*str, unsigned char font);//大小写字母变成大小写字母 signed int st_strlen(unsigned char* str);//获取字符串长度 signed int st_strcmp(unsigned char *s,unsigned char *t);//比较两个字符串大小 unsigned char *st_strcpy(unsigned char *t,unsigned char *s);//字符串拷贝 signed int st_strncmp(unsigned char *dest,unsigned char *src,unsigned int Len);//可变长度字符串大小比较 signed char st_toupper(unsigned char c);//小写字符转化为大写字符 unsigned char *st_strcat(unsigned char *s,unsigned char *t);//字符串连接 signed int st_memcpy(unsigned char *dest, unsigned char *src, unsigned int Len);//可变长度内存拷贝 signed int st_memset(unsigned char *dest,unsigned char byte, unsigned int Len);//设置长度为Len的内存块为byte signed int st_memcmp(unsigned char* dest, unsigned char* src, unsigned int Len);//内存段内数据比较 int gsmInvertNumbers(const char* pSrc, char* pDst, int nSrcLength);//正常顺序的字符串转换为两两颠倒的字符串,若长度为奇数,补'F'凑成偶数 int gsmSerializeNumbers(const char* pSrc, char* pDst, int nSrcLength);//两两颠倒的字符串转换为正常顺序的字符串 int gsmEncode7bit(const char* pSrc, unsigned char* pDst, int nSrcLength);//7bit编码 int gsmDecode7bit(const unsigned char* pSrc, char* pDst, int nSrcLength);//7bit解码 int gsmString2Bytes(const char* pSrc, unsigned char* pDst, int nSrcLength);//可打印字符串转换为字节数据 int gsmBytes2String(const unsigned char* pSrc, char* pDst, int nSrcLength);//字节数据转换为可打印字符串

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧