青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

從wave文件的讀寫看程序中struct的設(shè)計(jì)


在windows中,對于wave音頻格式,有如下的一系列結(jié)構(gòu):
typedef struct waveformat_tag 
{
    WORD    wFormatTag;        
/**//* format type */
    WORD    nChannels;         
/**//* number of channels (i.e. mono, stereo, etc.) */
    DWORD   nSamplesPerSec;    
/**//* sample rate */
    DWORD   nAvgBytesPerSec;   
/**//* for buffer estimation */
    WORD    nBlockAlign;       
/**//* block size of data */
}
 WAVEFORMAT;

typedef 
struct pcmwaveformat_tag 
{
    WAVEFORMAT  wf;
    WORD        wBitsPerSample;
}
 PCMWAVEFORMAT;

struct TWavHeader
{
    
char rId[4];                //標(biāo)志符(RIFF)
    DWORD rLen;         //數(shù)據(jù)大小,包括數(shù)據(jù)頭的大小和音頻文件的大小
    char wId[4];              //格式類型("WAVE")
    char fId[4];                //"fmt"
    DWORD fLen;         //Sizeof(PCMWAVEFORMAT)
    PCMWAVEFORMAT wavFormat;
    
char dId[4];              //"data"
    DWORD wSampleLength;    //音頻數(shù)據(jù)的大小
}
;

采用這樣的結(jié)構(gòu)寫的音頻文件,文件頭會有如下的結(jié)果:

不難發(fā)現(xiàn),第0020行明顯多出幾個(gè)字節(jié)。這樣造成聲音文件無法播放出來。

從結(jié)構(gòu)定義角度來看,也不難發(fā)現(xiàn)PCMWAVEFORMAT結(jié)構(gòu)中,WAVEFORMAT結(jié)構(gòu)前四個(gè)成員已經(jīng)4字節(jié)對齊了,最后一個(gè)成員nBlockAlign只占用兩字節(jié),按照字節(jié)對齊規(guī)則,需要在填充兩個(gè)無效字節(jié),從而保證到4字節(jié)對齊;PCMWAVEFORMAT結(jié)構(gòu)還是采用4字節(jié)對齊,因此只占用兩字節(jié)的
最后一個(gè)成員wBitsPerSample還需要兩字節(jié)補(bǔ)齊,因此才有了上圖的字節(jié)分布。

解決方法就是采用緊縮結(jié)構(gòu),不允許字節(jié)對齊。

從這個(gè)親身經(jīng)歷來看,字節(jié)非對齊的結(jié)構(gòu)也是一種潛在的bug,程序中設(shè)計(jì)的各種結(jié)構(gòu)盡量保持字節(jié)對齊是一種好的習(xí)慣。

posted on 2008-06-16 11:00 Wealth 閱讀(1972) 評論(4)  編輯 收藏 引用 所屬分類: C++

評論

# re: 從wave文件的讀寫看程序中struct的設(shè)計(jì) 2008-06-16 11:21 Kevin Lynx

有道理,對于用struct寫文件這種情況,很容易因?yàn)閟truct的字節(jié)對齊問題導(dǎo)致想不到的BUG。尤其是采用直接將struct以二進(jìn)制方式寫入文件的方式寫文件。
  回復(fù)  更多評論   

# re: 從wave文件的讀寫看程序中struct的設(shè)計(jì) 2008-06-17 19:56 Wealth

@Kevin Lynx

對呀,這些bug一般還很難找。  回復(fù)  更多評論   

# re: 從wave文件的讀寫看程序中struct的設(shè)計(jì) 2008-06-23 01:10 R2仔

用 #pragma pack(2) 來改變字節(jié)對齊設(shè)置也可以吧  回復(fù)  更多評論   

# re: 從wave文件的讀寫看程序中struct的設(shè)計(jì) 2008-06-24 14:55 Wealth

@R2仔
在這個(gè)應(yīng)用中是可以的。
但我們在這里討論的不是幾個(gè)字節(jié)對齊的問題,而是如何避免由于潛在的機(jī)制而導(dǎo)致的bug  回復(fù)  更多評論   

<2025年9月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿

隨筆分類(8)

隨筆檔案(8)

文章分類

Around Web

CoBlog

Develop Usage Link

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜亚洲视频| 在线看国产日韩| 玖玖在线精品| 久久亚洲私人国产精品va媚药| 午夜精品一区二区三区在线视| 亚洲网友自拍| 欧美综合国产精品久久丁香| 久久精品国产清自在天天线| 毛片av中文字幕一区二区| 欧美不卡激情三级在线观看| 欧美麻豆久久久久久中文| 欧美日韩亚洲视频| 国产精品久久久久久影视| 国产欧美日韩在线视频| 在线视频国内自拍亚洲视频| 99国产精品国产精品毛片| 亚洲伊人网站| 麻豆亚洲精品| 中文国产成人精品| 狼人社综合社区| 国产精品久久久久婷婷| 尤物yw午夜国产精品视频明星| 亚洲精品欧美激情| 性色av一区二区三区| 欧美激情精品久久久六区热门| 亚洲九九精品| 欧美一区二视频在线免费观看| 免费成人黄色片| 国产精品一页| av成人激情| 久久婷婷国产综合精品青草| 亚洲精品字幕| 久热成人在线视频| 国产区在线观看成人精品| 亚洲三级免费| 久久字幕精品一区| 午夜精品久久久久久久蜜桃app| 欧美va亚洲va国产综合| 国产精品美女www爽爽爽| 亚洲日本一区二区| 宅男噜噜噜66一区二区 | 亚洲精品国产拍免费91在线| 亚洲美女精品成人在线视频| 欧美一区三区二区在线观看| 欧美精品在线观看| 1204国产成人精品视频| 欧美在线视频日韩| 99精品久久久| 欧美国产一区在线| 尤物精品在线| 蜜臀久久99精品久久久久久9| 亚洲永久视频| 国产精品捆绑调教| 亚洲一区日韩在线| 99精品福利视频| 欧美日韩精品在线播放| 日韩亚洲视频在线| 亚洲精品中文字幕在线观看| 欧美黄色成人网| 亚洲三级观看| 亚洲人成网站777色婷婷| 女女同性精品视频| 亚洲区免费影片| 欧美激情四色| 欧美激情综合网| 夜夜嗨一区二区| 一区二区三区不卡视频在线观看| 欧美日韩视频专区在线播放 | 在线综合+亚洲+欧美中文字幕| 欧美激情精品久久久| 欧美国产视频在线| 亚洲视频成人| 亚洲视频第一页| 国产乱码精品一区二区三区五月婷| 亚洲一区二区综合| 亚洲欧美日韩精品久久久久| 国产精品一区亚洲| 久久综合中文字幕| 欧美成人午夜激情视频| 亚洲美女福利视频网站| 日韩一区二区电影网| 国产精品盗摄一区二区三区| 午夜精品理论片| 久久国产精品久久精品国产| 亚洲国产美女| 日韩视频免费观看| 国产色视频一区| 欧美黄色一级视频| 国产精品a级| 裸体素人女欧美日韩| 欧美精品一区三区| 久久久久久电影| 欧美精品v日韩精品v国产精品 | 亚洲精品中文字幕有码专区| 国产精品第一区| 中日韩美女免费视频网址在线观看 | 欧美高清日韩| 国产精品国产三级国产| 久久久久这里只有精品| 男女视频一区二区| 欧美亚洲综合久久| 欧美激情精品久久久久久大尺度| 亚洲欧美bt| 免费在线看成人av| 久久久久久久久久看片| 欧美日韩久久| 欧美高清视频一区二区三区在线观看 | 久久人91精品久久久久久不卡| 亚洲精品久久久久久久久久久| 亚洲性图久久| 亚洲免费观看高清完整版在线观看| 性伦欧美刺激片在线观看| 99热免费精品在线观看| 久久久噜噜噜久久久| 亚洲欧美综合精品久久成人| 欧美.日韩.国产.一区.二区| 久久精品主播| 国产精品资源在线观看| 99国产精品久久久久久久成人热 | 亚洲欧美日韩一区在线| 欧美大片国产精品| 欧美成人国产| 极品少妇一区二区| 午夜精品在线| 欧美一区二区三区精品电影| 欧美日韩第一区日日骚| 亚洲欧洲日产国产网站| 亚洲国产一区二区三区高清 | 亚洲免费视频中文字幕| 中文在线资源观看网站视频免费不卡| 久久久噜久噜久久综合| 久久免费国产精品1| 国产偷国产偷亚洲高清97cao | 欧美成人午夜激情在线| 黑人极品videos精品欧美裸| 亚洲一区精品视频| 午夜精品久久久久久久久久久久久 | 宅男噜噜噜66一区二区 | 亚洲欧美福利一区二区| 国产精品女主播一区二区三区| 亚洲国产一区在线观看| 亚洲黄色免费电影| 欧美成人高清视频| 亚洲国产成人91精品| 亚洲日本va在线观看| 欧美国产一区视频在线观看 | 亚洲观看高清完整版在线观看| 亚洲大胆av| 噜噜噜91成人网| 亚洲高清在线| 亚洲视频1区| 国产午夜精品一区二区三区视频| 欧美中文在线视频| 鲁鲁狠狠狠7777一区二区| 亚洲电影自拍| 欧美日本一道本| 亚洲一区二区三区在线视频| 欧美制服丝袜第一页| 狠狠色狠狠色综合日日tαg| 老牛影视一区二区三区| 日韩亚洲精品视频| 久久久久久成人| 99国内精品久久久久久久软件| 欧美午夜电影在线| 久久国产视频网站| 亚洲精品欧洲| 久久精品在线| 一区二区三区三区在线| 国产一区二区三区免费不卡| 美国三级日本三级久久99| 9i看片成人免费高清| 老牛国产精品一区的观看方式| 亚洲精品网址在线观看| 国产欧美日本一区视频| 欧美国产日本| 欧美在线三区| 99精品欧美一区二区三区| 香蕉精品999视频一区二区| 影音先锋日韩有码| 欧美视频一区在线| 欧美一区午夜视频在线观看| 你懂的成人av| 一区二区三区视频在线| 狠狠久久五月精品中文字幕| 欧美电影专区| 性做久久久久久免费观看欧美| 亚洲人成啪啪网站| 欧美va亚洲va日韩∨a综合色| 99国产精品视频免费观看| 国产麻豆成人精品| 老司机精品导航| 欧美中在线观看| 一区二区欧美精品| 欧美高清在线播放| 午夜亚洲福利| 亚洲午夜小视频| 99re成人精品视频| 亚洲国产成人精品久久| 国产日韩精品视频一区二区三区| 欧美理论在线播放|