keil C51 里面 编译后无法使用 (*(char*)(&temp))

xixihan3211 2015-06-07 04:11:39
C51里比如下面的语句 编译后无法使用
buf[] 里面是char型 比如
char buf[5]={0xcc,0x25,0xb8,0xc1,0x6a}; 
(*(char*)(&temp))=buf[0];
(*((char*)(&temp)+1))=buf[1];
(*((char*)(&temp)+2))=buf[2];
(*((char*)(&temp)+3))=buf[3];




如何解决
...全文
195 点赞 收藏 10
写回复
10 条回复
mangoalx 2015年06月10日
我觉得可能是指针加减的问题,楼主试试4楼的办法
回复 点赞
woshi_ziyu 2015年06月10日
楼主可以试试1楼的方法
回复 点赞
jiqiang01234 2015年06月10日
如果是整数直接要memcpy给数组,或者反之。需注意内存字节大小端的问题。
回复 点赞
xixihan3211 2015年06月09日
引用 6 楼 jiqiang01234 的回复:
[quote=引用 5 楼 xixihan3211 的回复:] [quote=引用 2 楼 jiqiang01234 的回复:] 直接memcpy就行,这么费劲赋值干嘛
因为是用特定代码转换来的 char 所以额只好用在这个办法复原 vs中可以完美运行 到了kei c51l就不行了[/quote] 试过memcpy不行了?[/quote] 试过,这个可以用。 但数值好像有偏差。
回复 点赞
jiqiang01234 2015年06月09日
引用 5 楼 xixihan3211 的回复:
[quote=引用 2 楼 jiqiang01234 的回复:] 直接memcpy就行,这么费劲赋值干嘛
因为是用特定代码转换来的 char 所以额只好用在这个办法复原 vs中可以完美运行 到了kei c51l就不行了[/quote] 试过memcpy不行了?
回复 点赞
xixihan3211 2015年06月09日
引用 2 楼 jiqiang01234 的回复:
直接memcpy就行,这么费劲赋值干嘛
因为是用特定代码转换来的 char 所以额只好用在这个办法复原 vs中可以完美运行 到了kei c51l就不行了
回复 点赞
dceacho 2015年06月08日
(*((char*)(&temp)+1)) 小括号像是错了 * (char*)(&temp+1)=buf[0];
回复 点赞
of123 2015年06月08日
试试: ((char *) temp)[0] = buf[0]; ((char *) temp)[1] = buf[1]; ......
回复 点赞
jiqiang01234 2015年06月07日
直接memcpy就行,这么费劲赋值干嘛
回复 点赞
worldy 2015年06月07日
&buf[0]才是地址
回复 点赞
发动态
发帖子
单片机/工控
创建于2007-09-28

1.0w+

社区成员

2.8w+

社区内容

硬件/嵌入开发 单片机/工控
社区公告
暂无公告