比如:unsigned short *p;p=new unsigned short [100];如何将p转换成int类型?我分别用 file.Read(&i,sizeof(int)); 和 file.Read(&j,sizeof(float)); 做实验,发现i 和 j 的值不一样,为什么,int 和 float 都是4个字节啊。
3 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
1、移位相加即可,但是要注意unsigned short类型,需要转换为无符号数据,否则0xe8认为是负数(其实也可以定义时就为unsigned short)。
2、例程:
#include <stdio.h> int main() { int i, result = 0; unsigned short a[4] = {0x00,0x00,0x03,0xe8}; //这里定义成unsigned char,那么下面就不需要强制转换了 for (i=0; i <4; i++) result += (unsigned short )a[i] << ((3-i)*8); //每次都移位,数据转换为无符号 printf ( "%d\n" , result); } |
30秒到达战场
TA贡献1828条经验 获得超6个赞
最好不要转,因为short是2个字节,int是4个字节,你转换以后,你的每2个short会被当做1个int,所以如果非要转,可以强制转换。
int *pp=(int *)p;就可以了,
但是一定要记住,这时候,pp就变成50个元素了,如果你数组越界有可能会出错。
RISEBY
TA贡献1856条经验 获得超5个赞
unsigned short *p;
int t[100];
p=new unsigned short [100];
for(i=0;i<100;i++)t[i]=p[i];
- 3 回答
- 0 关注
- 119 浏览
添加回答
举报
0/150
提交
取消