gpt4 book ai didi

c++ - 如何将 16 位整数写入文件?

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:57 25 4
gpt4 key购买 nike

使用 C++、Windows 7、Intel CPU。

我想做的是将浮点值 [-1, 1] 映射到 16 位有符号值并将它们写入文件。最明显的做法似乎是将浮点值乘以 32768 (2^16/2),然后简单地写入它们。以下是我这样做时发生的情况:

    std::ofstream outfile(filename.c_str());
float hypotheticalFloat = 0.25;
int16_t scaledVal = hypotheticalFloat*32768;
outfile << scaledVal;

然后八进制转储命令告诉我我有

    $ od -cd output.pcm
0000000 8 1 9 2
12600 12857

在我看来,它把每个 int16_t 值的数字写成它自己的字节。我会感激任何知道这里发生了什么的人。我不知所措。

最佳答案

这是因为两个错误:第一个是当你打开一个没有指定openmode的文件时。 , 它以文本模式打开,你希望它是二进制的:

std::ofstream outfile(filename.c_str(), std::ios::out | std::ios::binary);

另一个错误是您使用了文本输出运算符 << .你需要 write 数据:

outfile.write(reinterpret_cast<const char*>(&scaledVal), sizeof scaledVal);

关于c++ - 如何将 16 位整数写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com