完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请教数据类型转换问题,处理器类型:ADSP21479,编译器visual DSP 5.0。
想实现unsigned char和double的转换(因为从外部接口接收到的是unsigned char)。转换方法如下 typedef union{ double d; unsigned char c[8]; } fc_convert; fc_convert fc; fc.c[0] = 0xD3; fc.c[1] = 0x44; fc.c[2] = 0x6F; fc.c[3] = 0x51; fc.c[4] = 0x72; fc.c[5] = 0x06; fc.c[6] = 0x43; fc.c[7] = 0x40; double tempd =0.0; tempd = fc.d; 通过matlab将char转换成double应该为38.050363711672297。 但是DSP仿真一直不对。 |
|
相关推荐
1个回答
|
|
根据您提供的代码,我注意到您使用了一个union来实现unsigned char和double的转换。但是,在这种情况下,您需要确保unsigned char数组的字节顺序与您的处理器的字节顺序相匹配。
由于您正在使用ADSP21479处理器,它是一个Little-Endian处理器,所以您需要确保union中的unsigned char数组的字节顺序也是Little-Endian。 例如,如果您收到的unsigned char数组是按照Big-Endian字节顺序排列的,则可以按照以下方式进行转换: ```cpp typedef union{ double d; struct{ unsigned char c7; unsigned char c6; unsigned char c5; unsigned char c4; unsigned char c3; unsigned char c2; unsigned char c1; unsigned char c0; }c; } Converter; Converter converter; converter.c.c0 = receivedCharArray[7]; converter.c.c1 = receivedCharArray[6]; converter.c.c2 = receivedCharArray[5]; converter.c.c3 = receivedCharArray[4]; converter.c.c4 = receivedCharArray[3]; converter.c.c5 = receivedCharArray[2]; converter.c.c6 = receivedCharArray[1]; converter.c.c7 = receivedCharArray[0]; double convertedValue = converter.d; ``` 这样可以确保通过union进行的unsigned char数组和double的转换在Little-Endian处理器上是正确的。 此外,请注意,使用union进行数据类型转换可以引入一些平台依赖性和字节顺序问题。建议在使用union时要格外小心,并确保在不同处理器上测试和验证正确性。 希望这对您有帮助! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
386 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1670 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1123 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
1005 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1229 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12013 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 09:11 , Processed in 0.682357 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号