您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> 【已解决】[求助]visual dsp++中数据扩展问... 
本帖共有432个阅读者
发表帖子 发表投票 回复主题
【已解决】[求助]visual dsp++中数据扩展问题
rxxcsz(论坛新手)
rxxcsz
头衔:社区公民
帮派:无帮无派
帖数:50
金钱:546
积分:70
注册时间:2012/4/26
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
【已解决】[求助]visual dsp++中数据扩展问题
unsigned char a=0xa0;
unsigned short b;
b=(unsigned short)a;
为什么b得到的值是0xffa0呢?这个难道不是无符号的扩展,应该补0的吗?

诡异的是我新建一个工程只编译这一段程序,得到的又是正确值b=0x00a0;抬奇怪了,难道是我工程设置的原因?还有个区别是上面的情况是在ucos系统下


「该帖子被 rxxcsz 在 2014-04-04 10:01:51 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/4 9:04:31
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你打开memory窗口,看一下你定义a的内存地址前,是不是带有ff。


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/4/4 10:09:53
rxxcsz(论坛新手)
rxxcsz
头衔:社区公民
帮派:无帮无派
帖数:50
金钱:546
积分:70
注册时间:2012/4/26
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
的确有,这应该如何处理呢?
不好意思,我又仔细看了下,是没有的;有错的情况前面是0x00;没错的情况前面是0x20



「该帖子被 rxxcsz 在 2014-04-04 10:26:08 编辑过」

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/4 10:16:32
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
你加个掩码吧。
b=(unsigned short)a &0xff;

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/4/4 10:25:04
rxxcsz(论坛新手)
rxxcsz
头衔:社区公民
帮派:无帮无派
帖数:50
金钱:546
积分:70
注册时间:2012/4/26
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
按你的方法还是不行,得到的依然是0xffa0

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/4 10:29:10
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
那你对b操作,先降值赋给b,然后用0xff过滤b的数据。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/4/4 10:37:22
rxxcsz(论坛新手)
rxxcsz
头衔:社区公民
帮派:无帮无派
帖数:50
金钱:546
积分:70
注册时间:2012/4/26
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
依然不行,完全没有变化,这段程序在其他工程中都没有问题,加到ucos工程中就变成这样了,难道是UCOS的原因?

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/4 10:50:16
rxxcsz(论坛新手)
rxxcsz
头衔:社区公民
帮派:无帮无派
帖数:50
金钱:546
积分:70
注册时间:2012/4/26
7信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我把这段程序复制到另一个UCOS工程中,却没有问题。。。。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/4 10:56:31
rxxcsz(论坛新手)
rxxcsz
头衔:社区公民
帮派:无帮无派
帖数:50
金钱:546
积分:70
注册时间:2012/4/26
8信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
解决了。
unsigned short MakeWord(unsigned char a,unsigned char b)
{
unsigned short value=0;
value=(unsigned short)a<<8;
value=value+(unsigned short)b;
return value;
}

这是原始程序,引入的参数是数组中的两个变量,但数组被定义成了有符号的;所以就造成了这个结果。

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/4/4 11:09:19
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159200 Call, 1 Queries, Processed in 0.015991 second(s),