打印

数据类型转换求解

[复制链接]
1426|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ADaiPlay|  楼主 | 2011-12-17 19:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ADaiPlay 于 2011-12-17 19:24 编辑

碰到个很基础但是又很头疼的问题:
从音频设备读取的数据样本是char类型的,一个样本两个char组成,这个申请个char类型的数组和内存存放,但是处理的时候要转换成short类型或者int类型,以转换成short类型为例:我这样实现的,编译不报错,但是运行时提示非法指针:
char *buffer;
short *buffer1;
int i;

buffer = (char *)malloc(size);
buffer1 = (short *)malloc(size);
for(i=0;i<size;i++)
{
    ×buffer1 = (short)(*buffer);
    ×buffer1 <<=8;
    ×buffer1 +=(short)(*(buffer++));
    buffer ++;   
    buffer1 ++;
}

求解阿。。。。。。。

相关帖子

沙发
ADaiPlay|  楼主 | 2011-12-17 19:36 | 只看该作者
额,这帖发的草率了,虽然才折磨我3个小时,但是我不知道在第四个小时能弄出来:
问题是释放内存时候出错了,已经改变buffer和buffer1了,所以后面有一句
:free(buffer)
free(buffer1)
造成释放内存失败,报错。。。。

使用特权

评论回复
板凳
elife| | 2011-12-17 19:52 | 只看该作者
楼主,你这个是什么处理器,有对齐的问题吗?

使用特权

评论回复
地板
ADaiPlay|  楼主 | 2011-12-18 09:15 | 只看该作者
我是在pc上测试的,
没考虑对齐问题。。。 3# elife

使用特权

评论回复
5
ADaiPlay|  楼主 | 2012-1-4 21:45 | 只看该作者
找到一个更好的将char转换为short类型的方法
char *buffer;
short buffer1;

memcpy(buffer1, buffer,buffer1长度);

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:老实做人,塌心做事——为理想挥汗 网站:www.edreamtek.com 文章:http://blog.csdn.net/adaiplay

23

主题

626

帖子

6

粉丝