[求助] 关于uint转uchar型的问题

EFJIM   2018-4-23 23:13 楼主
诸位大佬,有没有人遇到过这种问题啊,在CCS中想把uint转换成uchar型,但是转换过后,uchar型的变量用default格式无法显示,只有用其他格式才能显示。如果把变量通过串口助手发给电脑,也收不到字符,只能收到HEX,而且HEX好像还错了。卡在这个地方很久了,希望高手能指导指导萌新,感激不尽! QQ图片20180423230839.png QQ图片20180423230857.png
void Data_do(uint temp_d)
{
    uint temp_1,temp_2;
    A[0]=temp_d/1000;                       //分出千,百,十,和个位
    temp_1=temp_d%1000;
    A[1]=temp_1/100;
    F=A[1];
//    B[1]=(uchar)A[1];
    temp_2=temp_1%100;
    A[2]=temp_2/10;
    A[3]=temp_2%10;
}



回复评论 (11)

要是送到上位机的话让上位机去转换,你只要高低八位发送就行了.
点赞  2018-4-24 08:24
上策:
去看书把,重看一遍大学C教材,再买本《C和指针》。

下策:
继续等答案,或者看看这个《ASSIC 表》
ASSIC 表.pdf (42.38 KB)
(下载次数: 1, 2018-4-24 08:26 上传)

要666
点赞  2018-4-24 08:26
你这个标题不明确怎么转,数就是数本就没什么可转的.
uint转十进制asc码或者十六进制asc码或XXX码才行.
点赞  2018-4-24 08:32
引用: huo_hu 发表于 2018-4-24 08:32
你这个标题不明确怎么转,数就是数本就没什么可转的.
uint转十进制asc码或者十六进制asc码或XXX码才行.

定义是这样的
uint A[4]
uchar B[4]
数组A通过代码运算取得值
然后直接赋值给B[0]=A[0],
但是在CCS中,B[0]显示为一个点.
而不是字符,更改显示模式后可以显示,如上图所示
点赞  2018-4-24 18:01
引用: le062 发表于 2018-4-24 08:26
上策:
去看书把,重看一遍大学C教材,再买本《C和指针》。

下策:
继续等答案,或者看看这个《ASSIC  ...

嗯,谢谢你的建议。
点赞  2018-4-24 18:02
昨天晚上查C语言的用法,找到了这个博客http://blog.sina.com.cn/s/blog_4ba5b45e0102durh.html
解决了我的问题

数字换成字符串,用sprintf.以整型为例。

char str[10];
int a=1234;
sprintf(str,"%d",a);
点赞  2018-4-24 18:03
http://blog.sina.com.cn/s/blog_4ba5b45e0102durh.html
昨晚在这个博客里面找到了答案。
谢谢各位的解答
点赞  2018-4-24 18:05
引用: EFJIM 发表于 2018-4-24 18:01
定义是这样的
uint A[4]
uchar B[4]
数组A通过代码运算取得值
然后直接赋值给B[0]=A[0],
但是在CCS ...

是啊,调试窗口可以修改数据类型

还是没明白你要做啥
点赞  2018-4-24 22:35
引用: huo_hu 发表于 2018-4-24 22:35 是啊,调试窗口可以修改数据类型 还是没明白你要做啥
不好意思,之前说错了,这里是看的 F ,不是 B 我附的两张图里面第一张 F 字符无法显示啊,只有更改了显示模式才能显示,这样通过串口发送出去的就不再是字符串了 本帖最后由 EFJIM 于 2018-4-25 11:23 编辑
点赞  2018-4-25 11:21
引用: huo_hu 发表于 2018-4-24 22:35
是啊,调试窗口可以修改数据类型

还是没明白你要做啥

第一张图用默认显示模式只能显示一个  .  (点)


点赞  2018-4-25 11:23
我用CCS调试C2000,不支持8位的数据。我忘了是CCS不支持还是C2000不支持了,好像是C2000,你调试的啥芯片
点赞  2018-5-10 10:51
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复