用C++读写二进制文件

2024-01-04

我对 C++ 完全陌生,昨天开始自学了几个小时。 所以:

我有一个未压缩的简单beep.wav文件,只有大约 3 秒长,其中有一声嘟嘟声。

我最终想要实现的是,只是读取文件,同时写入二进制数据,所有这些包括:标题, ftm and data或所有十六进制可读数据并将其转储到一个简单的beep.txt file.

在 C++ 中这可能吗?如果是这样,我应该如何开始读取和转储二进制文件?

我可以使用以下命令或多或少地读取该文件<fstream> class

#include <iostream>
#include <fstream>

   int main()
   {
       ifstream myfile ("beep.wav", ios::in|ios::binary|ios::ate);
       if (myfile.is_open())
       {
        //reading goes here
        }
       return 0;
    }

正如所提到的yzt,你需要提前知道你的.wav以及按什么顺序。据我所知,您将拥有标签、标头和值(样本)以及压缩信息。那么,首先:

例如,如果您知道要做的第一件事是读取压缩率,那么您将通过提取可能的文件来开始读取过程double :

ifstream myfile("beep.wav", ios::in|ios::binary);

double compression_rate;
myfile.read((char*)&compression_rate, sizeof(compression_rate));

// As well as probably the sample rate...
double sample_rate;
myfile.read((char*)&sample_rate, sizeof(sample_rate));

那么,样本数量可能是:

int nb_samples;
myfile.read((char*)&nb_samples, sizeof(nb_samples));

然后,这些样本的值...(此处存储为vector of double)

vector<double> vect;
vect.resize(nb_samples);
myfile.read((char*)&vect[0], nb_samples * sizeof(double));

Etc...

但话又说回来,什么是.wav你打开的是用什么做的?

一旦你完全掌握了内容,你就可以反其道而行之,开始编写你自己的内容.wav从头开始...


入门 http://www.eecs.umich.edu/eecs/courses/eecs380/HANDOUTS/cppBinaryFileIO-2.html - and here http://courses.cs.vt.edu/cs2604/fall02/binio.html.

字节 - PCM Wav 文件的“尸检” https://ccrma.stanford.edu/courses/422/projects/WaveFormat/.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用C++读写二进制文件 的相关文章

  • 为什么libc++的shared_ptr实现使用完整内存屏障而不是宽松内存屏障?

    在boost的实现中shared ptr 它用放松内存排序以增加其引用计数 https github com boostorg smart ptr blob master include boost smart ptr detail sp
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • asp.net 文本框文本模式数字,仅允许数字

    我只是想知道 ASP NET 中是否有一种方法只允许文本框中的数字textmode number 当我使用这个时
  • 使用具有现有访问令牌的 Google API .NET 客户端

    用例如下 移动应用程序正在通过 Google 对用户进行身份验证 并且在某些时候 我们需要将用户的视频发布到他的 YouTube 帐户 出于实际原因 实际发布应该由后端完成 已经存储在那里的大文件 由于用户已经通过应用程序的身份验证 因此应
  • C#动态支持吗?

    看完之后这个帖子 https stackoverflow com questions 2674906 when should one use dynamic keyword in c sharp 4 0k和链接 我还有 2 个问题 问题 1
  • 向 ExpandoObject 添加方法时,“关键字 'this' 在静态属性、静态方法或静态字段初始值设定项中无效”

    我尝试向 ExpandoObject 添加一个动态方法 该方法将返回属性 动态添加 给它 但它总是给我错误 我在这里做错了什么吗 using System using System Collections Generic using Sys
  • 32 位应用程序的特征最大矩阵大小

    所以 我正在寻找Eigen http eigen tuxfamily org index php title Main Page当我尝试声明大于 10000x10000 的矩阵时 包崩溃 我需要声明一个像这样的矩阵 可靠地大约有 13000
  • 使用post方法将多个参数发送到asp.net core 3 mvc操作

    使用 http post 方法向 asp net mvc core 3 操作发送具有多个参数的 ajax 请求时存在问题 参数不绑定 在 dot net 框架 asp net web api 中存在类似的限制 但在 asp net mvc
  • C++:重写已弃用的虚拟方法时出现弃用警告

    我有一个纯虚拟类 它有一个纯虚拟方法 应该是const 但不幸的是不是 该接口位于库中 并且该类由单独项目中的其他几个类继承 我正在尝试使用这个方法const不会破坏兼容性 至少在一段时间内 但我找不到在非常量方法重载时产生警告的方法 以下
  • C# 中的接口继承

    我试图解决我在编写应用程序时遇到的相当大的 对我来说 问题 请看这个 为了简单起见 我将尝试缩短代码 我有一个名为的根接口IRepository
  • 从多个类访问串行端口

    我正在尝试使用串行端口在 arduino 和 C 程序之间进行通信 我对 C 编程有点陌生 该程序有多种用户控制形式 每一个都需要访问串口来发送数据 我需要做的就是从每个类的主窗体中写入串行端口 我了解如何设置和写入串行端口 这是我的 Fo
  • 访问者和模板化虚拟方法

    在一个典型的实现中Visitor模式 该类必须考虑基类的所有变体 后代 在许多情况下 访问者中的相同方法内容应用于不同的方法 在这种情况下 模板化的虚拟方法是理想的选择 但目前这是不允许的 那么 模板化方法可以用来解析父类的虚方法吗 鉴于
  • ASP MVC:服务应该返回 IQueryable 的吗?

    你怎么认为 你的 DAO 应该返回一个 IQueryable 以便在你的控制器中使用它吗 不 您的控制器根本不应该处理任何复杂的逻辑 保持苗条身材 模型 而不是 DAO 应该将控制器返回给视图所需的所有内容 我认为在控制器类中看到查询 甚至
  • 如何从网站下载 .EXE 文件?

    我正在编写一个应用程序 需要从网站下载 exe 文件 我正在使用 Visual Studio Express 2008 我正在使用以下代码 private void button1 Click object sender EventArgs
  • 如何将“外部模板”与由同一类中的模板化成员使用的嵌套类一起使用?

    首先 一些背景信息 我尝试以 Herb Sutter 在他的解决方案中介绍的方式使用 Pimpl 习语 得到了 101 http herbsutter com gotw 101 这在头文件中看起来像这样 include pimpl h h
  • Azure 事件中心 - 按顺序接收事件

    我使用下面的代码从 Azure Event Hub 接收事件 https learn microsoft com en us azure event hubs event hubs dotnet framework getstarted s
  • C# 中条件编译符号的编译时检查(参见示例)?

    在 C C 中你可以这样做 define IN USE 1 define NOT IN USE 1 define USING system 1 system 1 IN USE 进而 define MY SYSTEM IN USE if US
  • 获取 2 个数据集 c# 中的差异

    我正在编写一个简短的算法 它必须比较两个数据集 以便可以进一步处理两者之间的差异 我尝试通过合并这两个数据集并将结果更改放入新的数据集来实现此目标 我的方法如下所示 private DataSet ComputateDiff DataSet
  • strcmp 给出分段错误[重复]

    这个问题在这里已经有答案了 这是我的代码给出分段错误 include
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检

随机推荐

  • 使用 Lodash 删除数组中的元素

    我有这个数组 var fruits Apple Banana Orange Celery 我用Lodash的remove像这样 remove fruits function fruit return fruit Apple Banana O
  • 错误:输入网格不是有效的网格

    我有个问题 所以我有一个 XxYxZ 10x5x20 的 3D 矩阵 我想在等值面的帮助下绘制这个矩阵 因此 首先我需要创建一个网格 但是当我说时 第一个问题就出现了 X Y Z meshgrid 1 10 1 5 1 20 我得到一个 5
  • 如何使用 Kotlin 在 Android 中动态添加按钮

    如何使用 Kotlin 在 Android 中动态添加按钮 我是 Kotlin 新手 请帮忙 您可以通过调用按钮的构造函数来动态创建按钮 var myButton Button this 这 将是活动
  • 解析 FlightRadar24 和 JSOUP

    大家好 我想在 Flightradar24 com 上解析航班 我尝试过 JSOUP 和 Android 但结果为空 http postimg org image 6hdmp4hgv http postimg org image 6hdmp
  • Docker-compose 与 podman 一起使用?

    如何在 podman 中使用 docker compose 文件 这个例子 version 3 7 services gitea image gitea gitea latest environment DB TYPE postgres D
  • 源代码保护

    当您使用 Visual Studio 2010 编译要发布的程序时 是否有任何高级方法可以使您的程序反编译为源代码 在编译之前有什么方法可以用来加密源代码吗 默认情况下 Visual Studio 不会应用任何形式的增强功能 也不会修改除所
  • 从 JUnit 单元测试设置 android.location.Location 对象的参数

    我正在尝试对接收 android location Location 对象的函数进行单元测试 但我阻止了 因为我无法为位置对象设置参数 Test public void testLocation Location location new
  • Ubuntu 11.04 上的 Rails 3.1 通过 RVM - 未初始化的常量 Psych::Syck

    gem install rails pre ERROR While executing gem NameError uninitialized constant Psych Syck 我似乎找不到任何有关如何解决此问题的信息 还有其他人遇到
  • Flutter webview 文本输入被软键盘隐藏

    我正在 Android 上进行测试 我将验证它在 iOS 上是否相同 我的问题是 当我有一个显示条纹结帐页面的网页视图 并且我点击那里的文本条目以输入靠近底部 邮政编码 的内容时 虚拟键盘会覆盖网页视图 即使在网页视图 看起来 webvie
  • tkinter 中带有 matplotlib 图的弹出窗口

    当我在 tkinter 窗口中插入 matplotlib 图形时 当我启动程序时 会出现额外的弹出窗口 它们不会影响我的 GUI 的功能 但有点烦人 我已经编写了一个显示问题的基本脚本 我通过 Spyder 运行这个 import tkin
  • 如何访问 StreamBuilder 中的多个流?

    我尝试过做一个新的StreamBuilder在我的初始流的构建器内 虽然我没有收到任何错误 但它似乎也不起作用 这可以吗 基本上 我正在访问 Firebase 中的根集合 该集合包含两个文档 我需要每个文档的数据 因为我正在构建一个包含来自
  • 从巨大(>200MB)数组文件中加载随机对象,而不加载整个数组

    我正在构建一个静态 Angular 网站 其数据基于包含超过 200 000 个 JSON 对象的巨大数组中的 1000 个随机对象 我将大量的 JSON 对象以文本形式存储在网上的某个地方 例如 Github 或 Dropbox 并且文本
  • 状态模式 C++

    在遵循这里的一些优秀教程之后 我正在尝试创建一个简单的状态模式 http gameprogrammingpatterns com state html http gameprogrammingpatterns com state html
  • 从文件读取输入时创建进度条的最有效方法

    我有一个程序正在从一个相对较大的文件 数千行长 读取输入 话虽如此 我想在处理文件时实现一个进度条指示器 但是 我知道的大多数方法都要求您使用getLine计算文件中有多少行 并将其用作进度条的 预定义目标 提升示例 http www bo
  • 我可以隐式刷新数据吗?

    有没有办法将数据隐式刷新到输出流 include
  • iPhone HTTP Streaming .m3u8 和 .ts 文件 - 如何使用 ffmpeg 创建

    我正在尝试使用 ffmpeg 获取经过苹果验证的 http 媒体流 但出现错误 以下是一些错误示例 警告 播放列表内容类型为 application x mpegurl 但应该 是 application vnd apple mpegurl
  • 使用 avassetwriter 创建动画电影文件

    我有一个使用普通核心动画方法创建的动画 有没有办法使用 avassetwriter 创建电影文件 我看过其他问题 这些问题展示了如何使用 avassetwriter 使用图像创建电影 但我想使用使用核心动画创建的动画来创建电影 预先感谢 运
  • 在 Angular2 中使用窗口对象,但 vscode“找不到名称‘窗口’”

    我写了一个angular2Visual Studio 代码中的应用程序 最近 我将 Visual Studio Code 更新到了 1 10 2 但它却凸显了window因为有错误 我查了一下 发现上面写着 ts 找不到名称 窗口 我的代码
  • Jersey 与 log4j2 的兼容性 - 无法启动 servlet

    我在 Tomcat7 上使用 Jersey 1 19 与 log4j2 时遇到问题 我的项目针对 log4j1 的工作程序集包含以下内容 slf4j api 1 5 6 slf4j log4j12 1 5 6 log4j 1 2 14 我有
  • 用C++读写二进制文件

    我对 C 完全陌生 昨天开始自学了几个小时 所以 我有一个未压缩的简单beep wav文件 只有大约 3 秒长 其中有一声嘟嘟声 我最终想要实现的是 只是读取文件 同时写入二进制数据 所有这些包括 标题 ftm and data或所有十六进