在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 2016|回复: 0

请教MP3 CRC-16的计算问题!

[复制链接]
发表于 2008-8-4 19:03:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
MP3使用的CRC校验是CRC-16:X16+X15+X2+1 。我现在还在学习文档,用C语言读取MP3做试验。CRC-16这里怎么算都不对。


int main(){
char x0;
char x1;
char str[100]={0};
unsigned short reg,x3,tmp,x2;

//记录要校验的内容
strcpy(str,"90640000000000690500000800000D20A0000101C400F8780100005000198B002002");
x1=strlen(str);
reg=0xFFFF;
printf("\n%u",x1);
getchar(x0);

//从ASCII换成数值
for(x2=0;x2 <x1;x2++){
  if(str[x2] <58) x3=str[x2]-48;
  else x3=str[x2]-55;
  for(x0=0;x0 <4;x0++){
      //用CRC-16做异或,按照电路的意义来
      if( (reg^(x3 < <12))&0x8000==0x8000 ) {reg < <=1;reg=reg^0x8005;}
      else reg < <=1;
      x3 < <=1;
  }
}                  

printf("\nREG: %x",reg);

getchar(x0);
return 0;
}

以上那一串是从某首MP3文件里的一帧里找出来的,正确的结果应该是 0xFBA3,我的结果却是0X8003
但是不知道怎么办了。而且CRC这里,还有位操作的顺序,都搞的我晕乎乎的!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-17 00:33 , Processed in 0.019877 second(s), 11 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表