首页 > 解决方案 > 从文件读取字节顺序

问题描述

嘿,我有一个涉及.wav文件的项目。我找到了一些从这个文件中获取标题的方法,但我被一件事弄糊涂了。 http://soundfile.sapp.org/doc/WaveFormat/ 在这个网站上,它说一些数据是 Littlendian,一些数据是 Bigendian

我的问题是:为什么当我以同样的方式读取数据时它会起作用,并且不知何故它是正确的?为什么我不必指定获取数据的顺序。这可能是一个愚蠢的问题,但直到现在我才真正需要了解这些小细节。

 typedef struct wavHeader {
    byte chunckID[4];
    dword chunckSize;
    byte format[4];
    byte subchunk1ID[4];
    dword subchunk1Size;
    word audioFormat;
    word numChannels;
    dword sampleRate;
    dword byteRate;
    word blockAlign;
    word bitsPerSample;
    byte subchunk2ID[4];
    dword subchunk2Size;
 }
 wav_header;

 int check_file_name(char * filename);

 void list(char ** array) //argv
 {
    wav_header wavHeader;
    FILE * pFile;
    if (check_file_name(array[2]) == 0) {
        printf("wrong file name\n");
        exit(1);
    }
    pFile = fopen(array[2], "r");
    if (pFile != NULL) {
        fread( & wavHeader, sizeof(wav_header), 1, pFile);
        fclose(pFile);
        printf("ChunkID: %c%c%c%c\n", wavHeader.chunckID[0], wavHeader.chunckID[1], wavHeader.chunckID[2], wavHeader.chunckID[3]);
        printf("ChunkSize: %d\n", wavHeader.chunckSize);
        printf("Format: %c%c%c%c\n", wavHeader.format[0], wavHeader.format[1], wavHeader.format[2], wavHeader.format[3]);
        printf("SubChunk1ID: %c%c%c%c\n", wavHeader.subchunk1ID[0], wavHeader.subchunk1ID[1], wavHeader.subchunk1ID[2], wavHeader.subchunk1ID[3]);
        printf("Subchunk1Size: %d\n", wavHeader.subchunk1Size);
        printf("AudioFormat: %d\n", wavHeader.audioFormat);
        printf("NumChannels: %d\n", wavHeader.numChannels);
        printf("SampleRate: %d\n", wavHeader.sampleRate);
        printf("ByteRate: %d\n", wavHeader.byteRate);
        printf("BlockAlign: %d\n", wavHeader.blockAlign);
        printf("BitsPerSample: %d\n", wavHeader.bitsPerSample);
        printf("Subchunk2ID: %c%c%c%c\n", wavHeader.subchunk2ID[0], wavHeader.subchunk2ID[1], wavHeader.subchunk2ID[2], wavHeader.subchunk2ID[3]);
        printf("Subchunk2Size: %d\n", wavHeader.subchunk2Size);
    } else {
        printf("This file doesn't exit\n");
        exit(1);
    }
 }

标签: cfilewav

解决方案


推荐阅读