1.使用notepad ++ 读取二进制文件
notepad++ 软件-》插件-》打开插件文件夹。
把下载的HexEditor.dll放在新建的HexEditor文件夹中。就可以使用notepad++查看二进制文件。
2.标准wav文件头格式
typedef struct WAV_HEADER{
char RIFF[4]; // RIFF Header Magic header
unsigned long ChunkSize; // RIFF Chunk Size
char WAVE[4]; // WAVE Header
char fmt[4]; // FMT header
unsigned long Subchunk1Size; // Size of the fmt chunk
unsigned short AudioFormat; // Audio format 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM
unsigned short NumOfChan; // Number of channels 1=Mono 2=Sterio
unsigned long SamplesPerSec; // Sampling Frequency in Hz
unsigned long bytesPerSec; // bytes per second
unsigned short blockAlign; // 2=16-bit mono, 4=16-bit stereo
unsigned short bitsPerSample; // Number of bits per sample
char Subchunk2ID[4]; // "data" string
unsigned long Subchunk2Size; // Sampled data length
}wav_hdr;
typedef struct WAV_HEADER_CHAR{
char RIFF[4]; // RIFF Header Magic header
char ChunkSize[4]; // RIFF Chunk Size
char WAVE[4]; // WAVE Header
char fmt[4]; // FMT header
char Subchunk1Size[4]; // Size of the fmt chunk
char AudioFormat[2]; // Audio format 1=PCM,6=mulaw,7=alaw, 257=IBM Mu-Law, 258=IBM A-Law, 259=ADPCM
char NumOfChan[2]; // Number of channels 1=Mono 2=Sterio
char SamplesPerSec[4]; // Sampling Frequency in Hz
char bytesPerSec[4]; // bytes per second
char blockAlign[2]; // 2=16-bit mono, 4=16-bit stereo
char bitsPerSample[2]; // Number of bits per sample
char Subchunk2ID[4]; // "data" string
char Subchunk2Size[4]; // Sampled data length
}wav_hdr_char;
3.修改data内容
for (int flag = 0;flag <=(wavHeader.ChunkSize - 36) ;)
{
if(flag == 0)
{
fwrite(&wavHeader_char,sizeof(wav_hdr_char),1,output_wavFile);
flag+=4;
cout <<"FLAG :"<<flag<<endl;
fseek(wavFile,sizeof(wav_hdr_char),0);
}
else {
if(channel == "R")
{
char somedata[4];
fread(&somedata,sizeof(somedata),1,wavFile);
printf("%02x,%02x,%02x,%02x \n",somedata[0],somedata[1],somedata[2],somedata[3]);
somedata[0] =0x00;
somedata[1] =0x00;
fwrite(&somedata,sizeof(somedata),1,output_wavFile);
flag+=4;
cout <<"FLAG : "<<flag<<endl;
}
else if (channel == "L")
{
char somedata[4];
fread(&somedata,sizeof(somedata),1,wavFile);
printf("%02x,%02x,%02x,%02x \n",somedata[0],somedata[1],somedata[2],somedata[3]);
somedata[2] =0x00;
somedata[3] =0x00;
fwrite(&somedata,sizeof(somedata),1,output_wavFile);
flag+=4;
cout <<"FLAG : "<<flag<<endl;
}
else {
printf("error\n");
exit(EXIT_FAILURE);
}
}
}