-
-
未解决 [求助]到底是什么问题,是被编译器坑了吗?
-
发表于: 2019-8-21 14:38 2544
-
下面是网易ncm音乐的文件头,我尝试编译出解码程序。
程序编译通过,运行报错。是编译器的问题,还是我用的不对啊?
00000000 43 54 45 4E 46 44 41 4D 01 61 90 00 00 00 2C CE CTENFDAM a? ,?
00000010 D5 EB 69 EA FB 14 55 0D 45 BF 61 DD 17 1D 44 B4 针i犒 U E縜? D?
00000020 BA 1E AB 1A B6 9B 5D F1 6B 1B CF 20 29 8C 6F AC ??稕]駅 ?)宱?
00000030 AC 9B 97 73 63 4B 1A D7 44 57 5D 1A F3 31 0D 90 瑳梥cK 譊W] ? ?
00000040 DC F1 11 35 9F 4C 00 BB 8A 05 A0 BF B2 EF 99 03 荞 5烲 粖 牽诧?
00000050 1A 36 F5 DF 0C 97 DA 84 DD 25 49 D7 03 D8 25 F5 6踹 椱勢%I???
00000060 E0 52 C7 4E A9 9D 03 00 E8 B4 33 C8 16 AF 67 C1 郣荖 璐3?痝?
00000070 C9 B6 44 0A 85 D8 90 56 00 24 2B 54 AC D3 C0 9D 啥D 呚怴 $+T罎
00000080 BA 1D E7 89 5C 44 79 D4 0C 6C 70 17 A3 0E FC 12 ?鐗\Dy?lp ??
00000090 9A C3 A1 DB DC B6 B6 DE 9B 28 B2 41 33 D4 02 02 毭≯芏掇?睞3?
000000A0 00 00 52 55 50 43 08 06 1A 4B 27 0C 0D 44 17 43 RUPC K' D C
000000B0 0E 0C 07 0A 05 1A 4A 59 00 26 04 17 12 2B 1B 14 JY & +
int
process_file(const char *path) {
uint32_t ulen = 0;
int i;
FILE *f = fopen(path, "r");
fread(&ulen, sizeof(ulen), 1, f);
if (ulen != (uint32_t)0x4e455443) {
printf("isn't netease cloud music copyright file!\n");
return 1;
}
fread(&ulen, sizeof(ulen), 1, f);
if (ulen != (uint32_t)0x4d414446) {
printf("isn't netease cloud music copyright file!\n");
return 1;
}
fseek(f, 2, SEEK_CUR);
uint32_t key_len = 0;
fread(&key_len, sizeof(key_len), 1, f);
printf("%08X\n",key_len); // debug
// 这里是应该显示00000090吧,我printf的输入不是这个值
uint8_t key_data[key_len]; // 这里出错了,运行到这里程序报异常,
// 我不知道错在哪里?
程序编译通过,运行报错。是编译器的问题,还是我用的不对啊?
00000000 43 54 45 4E 46 44 41 4D 01 61 90 00 00 00 2C CE CTENFDAM a? ,?
00000010 D5 EB 69 EA FB 14 55 0D 45 BF 61 DD 17 1D 44 B4 针i犒 U E縜? D?
00000020 BA 1E AB 1A B6 9B 5D F1 6B 1B CF 20 29 8C 6F AC ??稕]駅 ?)宱?
00000030 AC 9B 97 73 63 4B 1A D7 44 57 5D 1A F3 31 0D 90 瑳梥cK 譊W] ? ?
00000040 DC F1 11 35 9F 4C 00 BB 8A 05 A0 BF B2 EF 99 03 荞 5烲 粖 牽诧?
00000050 1A 36 F5 DF 0C 97 DA 84 DD 25 49 D7 03 D8 25 F5 6踹 椱勢%I???
00000060 E0 52 C7 4E A9 9D 03 00 E8 B4 33 C8 16 AF 67 C1 郣荖 璐3?痝?
00000070 C9 B6 44 0A 85 D8 90 56 00 24 2B 54 AC D3 C0 9D 啥D 呚怴 $+T罎
00000080 BA 1D E7 89 5C 44 79 D4 0C 6C 70 17 A3 0E FC 12 ?鐗\Dy?lp ??
00000090 9A C3 A1 DB DC B6 B6 DE 9B 28 B2 41 33 D4 02 02 毭≯芏掇?睞3?
000000A0 00 00 52 55 50 43 08 06 1A 4B 27 0C 0D 44 17 43 RUPC K' D C
000000B0 0E 0C 07 0A 05 1A 4A 59 00 26 04 17 12 2B 1B 14 JY & +
int
process_file(const char *path) {
uint32_t ulen = 0;
int i;
FILE *f = fopen(path, "r");
fread(&ulen, sizeof(ulen), 1, f);
if (ulen != (uint32_t)0x4e455443) {
printf("isn't netease cloud music copyright file!\n");
return 1;
}
fread(&ulen, sizeof(ulen), 1, f);
if (ulen != (uint32_t)0x4d414446) {
printf("isn't netease cloud music copyright file!\n");
return 1;
}
fseek(f, 2, SEEK_CUR);
uint32_t key_len = 0;
fread(&key_len, sizeof(key_len), 1, f);
printf("%08X\n",key_len); // debug
// 这里是应该显示00000090吧,我printf的输入不是这个值
uint8_t key_data[key_len]; // 这里出错了,运行到这里程序报异常,
// 我不知道错在哪里?
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
赞赏
他的文章
- [求助]这个是什么壳 1531
- [求助]早期音频处理AU的1.5开放了sdk吗 1560
- 请教一个C++的编译错误 4323
- 有谁对电驴的协议有了解 3307
- [求助]vbs如何发送()键 3419
谁下载
无
看原图
赞赏
雪币:
留言: