【发布时间】:2010-03-04 04:21:29
【问题描述】:
gcc 4.4.2 c89
我有一个波形文件: 8000赫兹 16位
我想知道是否可以将这个波形文件的原始数据加载到缓冲区中。
非常感谢您的建议
【问题讨论】:
-
与将任何文件加载到缓冲区中有何不同?
-
如果你想要样本数据,标题中有字段指定样本数据的偏移量及其长度。
标签: c
gcc 4.4.2 c89
我有一个波形文件: 8000赫兹 16位
我想知道是否可以将这个波形文件的原始数据加载到缓冲区中。
非常感谢您的建议
【问题讨论】:
标签: c
是的,您正在寻找用 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。【讨论】:
如果您想处理声音样本,最好使用为您解释声音数据的库。例如libsndfile。
【讨论】:
恕我直言,最好的方法是使用链表,其中的元素包含大型(1024 或更多)固定大小的字符数组。
【讨论】:
【讨论】: