c语言如何读写二进制

c语言如何读写二进制,第1张

1、二进制文本使用fopen函数的二进制模式“rb”就可以打开。对于程序来说,不管后缀名如何,文件分为两种类型:文本文件和二进制文件。 C语言里有一系列文件 *** 作函数。区分文本和二进制文件,需要在打开文件时设置不同的控制符mode的变量即可。

2、fopen的函数原型:FILE fopen(const char path,const char mode);
  fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:
r 以只读方式打开文件,该文件必须存在。
r+ 以可读写方式打开文件,该文件必须存在。
rb+ 读写打开一个二进制文件,允许读数据。
rw+ 读写打开一个文本文件,允许读和写。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)
wb 只写打开或新建一个二进制文件;只允许写数据。
wb+ 读写打开或建立一个二进制文件,允许读和写。
wt+ 读写打开或着建立一个文本文件;允许读写。
at+ 读写打开一个文本文件,允许读或在文本末追加数据。
ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。
上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。

3、例程:

   #include <stdlibh>
    #include <stdioh>
    int main ()
    {
        FILE  fpPhoto,  fpText,  fpTarget ;
        int     iRead ;
        char    szBuf[100] ;
          
        printf ("请输入第一个文件名(jpg):\n") ;
        gets (szBuf) ;
        fpPhoto = fopen (szBuf, "rb") ;
        printf ("请输入第二个文件名(txt):\n") ;
        gets (szBuf) ;
        fpText = fopen (szBuf, "rb") ;
        printf ("请输入目的文件名(jpg):\n") ;
        gets (szBuf) ;
        fpTarget = fopen (szBuf, "wb") ;
      
        if (!fpPhoto || !fpText || !fpTarget)
        {
            printf ("打开文件失败!\n") ;
            system("pause") ;
            return -1 ;
        }
      
        while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpPhoto)) > 0)
            fwrite (szBuf, 1, iRead, fpTarget) ;
        while ((iRead = fread (szBuf, 1, sizeof (szBuf), fpText)) > 0)
            fwrite (szBuf, 1, iRead, fpTarget) ;
      
        fclose (fpPhoto) ;
        fclose (fpText) ;
        fclose (fpTarget) ;
        return 0 ;
    }

由于音频信号是一种连续变化的模拟信号,而计算机只能处理和记录二进制的数字信号,因此,由自然音源而得的音频信号必须经过一定的变化和处理,变成二进制数据后才能送到计算机进行再编辑和存贮。

PCM(Pulse Code Modulation)脉冲编码调制是一种模数转换的最基本编码方法。主要包括:

1、采样:在时间轴上对信号数字化;

2、量化:在幅度轴上对信号数字化;

3、编码:按一定格式记录采样和量化后的数字数据。

扩展资料:

脉冲编码调制把模拟信号转换成数字信号的过程称为模/数转换,它主要包括:\x0d采样:在时间轴上对信号数字化;\x0d量化:在幅度轴上对信号数字化;\x0d编码:按一定格式记录采样和量化后的数字数据。

编码的过程首先用一组脉冲采样时钟信号与输入的模拟音频信号相乘,相乘的结果即输入信号在时间轴上的数字化。然后对采样以后的信号幅值进行量化。最简单的量化方法是均衡量化,这个量化的过程由量化器来完成。

对经量化器A/D变换后的信号再进行编码,即把量化的信号电平转换成二进制码组,就得到了离散的二进制输出数据序列x ( n ),n表示量化的时间序列,x ( n )的值就是n时刻量化后的幅值,以二进制的形式表示和记录。

先分开给您介绍一下视频编码跟音频编码:
视频编码就是通过特定的压缩技术,将某个视频格式的文件转换成另外一种视频格式文件的方法。
视频编码的主要功能是完成图像的压缩,使数字电视信号的传输量由1Gbit/s(针对1920x1080显示格式)减少为20-30Mbit/s。
自然界中的声音以及波形都非常复杂,声音其实也是一种能量波,它有频率和振幅
其中频率所对应的是时间轴线,振幅对应的是电平轴线。
波是无限光滑的,弦线可看成由无数点组成。
音频编码主要是完成对声音信息的压缩。
声音信号数字化后,信息量比模拟传输状态大很多,不能像模拟电视声音那样直接传输
因而需要对声音多一道压缩编码工序,即为音频编码。
音视频编码原理视频编码主要是对图像进行有效的压缩。
原始视频图像数据中包含大量的冗余信息视频编码主要采取块运动估计和运动补偿技术有效的去除图像帧间冗余度,来压缩码率和带宽,实现信号有效传输的目的。
我们需要通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字信号。
抽样就是在时间上将模拟信号离散化。
量化是用有限个幅度值近似原来连续变化的幅度值,把模拟信号的连续幅度变为有限数量的有一定间隔的离散值。
编码就是按一定的规律把量化后的值用二进制数字表示,然后转换成二值或多值得数字信号流。
通常我们采用PCM编码,其主要过程是将话音、图像等模拟信号每隔一段时间进行取样,使其离散化,同时将抽样值按分层单位四舍五入取整量化,并将抽样值按一组二进制码来表示抽样脉冲的幅值。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13404027.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存