gcc 4.4.2 C89
我有一个wave文件: 8000赫兹 16位
我想知道无论如何我都可以将这个wave文件的原始数据加载到缓冲区中。
非常感谢任何建议
答案 0 :(得分:1)
是的,你正在寻找用C读取二进制文件。 像这样:
FILE* f;
char buf[MAX_FILE_SIZE];
int n;
f = fopen("filename.bin", "rb");
if (f)
{
n = fread(buf, sizeof(char), MAX_FILE_SIZE, f);
}
else
{
// error opening file
}
这将读取 bytes 的缓冲区。从中您可以构建您的数据。直接读取多字节数据更加棘手,因为您遇到了表示和字节序的问题。
使用了两个关键的C函数:
fopen
以二进制模式打开文件(“rb”标志)fread
读取块数据(对二进制流很有用)。记录here。答案 1 :(得分:1)
如果您想处理声音样本,最好使用一个为您解释声音数据的库。例如libsndfile。
答案 2 :(得分:1)
恕我直言的最佳方式是使用包含大量(1024个或更多)固定大小字符数组的元素的链表。
答案 3 :(得分:0)