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

從wave文件的讀寫看程序中struct的設計


在windows中,對于wave音頻格式,有如下的一系列結構:
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];                //標志符(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ù)的大小
}
;

采用這樣的結構寫的音頻文件,文件頭會有如下的結果:

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

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

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

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

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

評論

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

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

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

@Kevin Lynx

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

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

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

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

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

<2008年6月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

導航

統(tǒng)計

常用鏈接

留言簿

隨筆分類(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>
            在线观看欧美视频| 久久九九全国免费精品观看| 国产欧美亚洲视频| 亚洲精品日韩久久| 亚洲激情女人| 亚洲精品美女在线观看播放| 亚洲国产第一页| 日韩视频免费| 在线亚洲免费视频| 亚洲婷婷综合久久一本伊一区| 亚洲午夜精品久久| 欧美一区二区视频在线观看2020| 一区二区三区你懂的| 午夜精品久久久久久久男人的天堂| 午夜精品福利一区二区蜜股av| 性欧美8khd高清极品| 久久嫩草精品久久久精品| 女仆av观看一区| 欧美大片一区| 一区二区三区国产精华| 午夜精品网站| 欧美激情视频网站| 国产精品丝袜久久久久久app| 国产午夜精品在线| 亚洲乱码国产乱码精品精可以看| 午夜亚洲影视| 亚洲福利专区| 亚洲视频一二| 欧美成人精品在线播放| 国产精品国产三级国产aⅴ无密码| 国产亚洲成av人在线观看导航| 亚洲国产精品毛片| 香蕉免费一区二区三区在线观看| 欧美大片一区二区| 亚洲综合色激情五月| 欧美激情一区二区| 狠狠久久亚洲欧美| 亚洲一区二区综合| 亚洲国产精品尤物yw在线观看| 午夜精品区一区二区三| 欧美精品在线网站| 激情欧美一区二区三区| 性亚洲最疯狂xxxx高清| 日韩视频免费观看高清完整版| 久久深夜福利| 国产视频一区二区三区在线观看| 99一区二区| 亚洲电影免费观看高清| 久久久精品动漫| 国产午夜精品一区二区三区欧美| 亚洲一区在线免费| 亚洲三级免费电影| 欧美电影免费观看高清完整版| 国产一区久久| 久久久精品国产免大香伊| 亚洲一区二区三区免费视频| 欧美视频在线不卡| 亚洲午夜视频在线观看| 亚洲美女免费视频| 久久午夜电影| 美女精品在线| 欧美一区二视频| 国产精品久久9| 亚洲网在线观看| 99国产精品久久久久老师| 蜜臀久久99精品久久久久久9 | 久久久欧美精品sm网站| 国产精品成人在线观看| 中文在线不卡| 中文欧美在线视频| 国产精品揄拍一区二区| 久久成人综合视频| 久久成人18免费网站| 国内精品视频一区| 久久综合999| 久久精品成人欧美大片古装| 国产日韩一区欧美| 夜夜精品视频| 亚洲美女黄网| 久久青青草原一区二区| 在线观看日韩欧美| 久久色在线观看| 亚洲在线1234| 在线不卡中文字幕| 亚洲黄色av| 国产精品激情av在线播放| 久久精品99久久香蕉国产色戒| 久久国产精品一区二区三区四区| 狠狠色丁香久久综合频道 | 亚洲特级毛片| 经典三级久久| 99国产精品久久久久久久久久| 国产精品夜夜夜| 噜噜噜91成人网| 欧美日韩国产天堂| 久久久www成人免费无遮挡大片| 久久综合色88| 午夜视频一区| 欧美激情中文不卡| 久久夜色精品国产| 国产精品va在线播放| 欧美成人中文| 国产偷国产偷亚洲高清97cao| 亚洲国产日韩在线| 国产丝袜美腿一区二区三区| 亚洲精品在线免费观看视频| 韩国精品一区二区三区| 亚洲人精品午夜| 精品1区2区3区4区| 亚洲午夜精品一区二区三区他趣| 在线日韩av永久免费观看| 亚洲一区二区在线免费观看| 亚洲伦理久久| 久久亚洲影院| 久热re这里精品视频在线6| 欧美午夜精品久久久久久久| 欧美激情第五页| 黄色一区二区三区| 亚洲欧美区自拍先锋| 亚洲视频精品在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美视频一区二区| 欧美va天堂| 国产有码一区二区| 中文欧美在线视频| 99精品免费网| 欧美福利电影网| 欧美成人黑人xx视频免费观看| 国产欧美日韩亚洲| 亚洲一区三区电影在线观看| 国产精品99久久不卡二区| 欧美激情一区二区三级高清视频| 女仆av观看一区| 136国产福利精品导航| 欧美专区18| 免费看亚洲片| 亚洲国产成人精品女人久久久| 久久精品免费看| 你懂的一区二区| 亚洲国产成人久久综合一区| 老鸭窝91久久精品色噜噜导演| 久久午夜精品| 亚洲高清二区| 欧美99久久| 日韩午夜在线视频| 亚洲一区二区在线免费观看| 欧美视频日韩视频在线观看| 在线亚洲成人| 欧美中文字幕在线播放| 国产一区二区三区精品久久久| 亚洲欧美在线免费| 久久婷婷国产综合尤物精品| 韩国亚洲精品| 欧美 日韩 国产精品免费观看| 欧美国产日产韩国视频| 亚洲精品日韩精品| 国产精品成人v| 欧美在线观看视频在线| 欧美不卡在线| 国产精品99久久久久久久女警| 国产精品国产三级国产专区53| 翔田千里一区二区| 欧美黄色网络| 亚洲欧美日韩网| 伊伊综合在线| 欧美日韩免费看| 性色一区二区三区| 亚洲大胆人体视频| 亚洲影院免费观看| 精品成人免费| 欧美日一区二区三区在线观看国产免| 亚洲中无吗在线| 欧美二区乱c少妇| 亚洲欧美一区二区三区在线| 在线观看成人小视频| 欧美视频导航| 久久亚洲综合网| 亚洲视频在线视频| 欧美国产一区二区在线观看| 亚洲欧美在线免费| 亚洲国产精品久久久久| 国产精品亚洲视频| 欧美黑人多人双交| 欧美一区二区三区免费在线看| 欧美福利视频在线| 欧美一区二区国产| 99国产精品久久久久久久久久 | 亚洲性图久久| 美女诱惑一区| 亚洲欧美日韩中文视频| 亚洲国产日韩美| 国产日韩在线一区| 欧美日韩国产专区| 久久综合色婷婷| 久久精品99国产精品| 亚洲天堂成人| 亚洲天堂av图片| 一区二区三区免费看| 亚洲精品久久久久久久久| 欧美xx69|