windows規定乙個掃瞄行所佔的位元組數必須是4的倍數(即以long為單位),不足的以0填充,開發過程中:
int temp_width = (m_orgwidth*3+3)/4
*4;
用24位位圖來說,如果高是2:
如果寬為5,則每行實際佔15位元組,buf的每行末位只補1個0x00//16-15=1
如果寬為6,則每行實際佔18位元組,buf的每行末位只補2個0x00//20-18=2
如果寬為7,則每行實際佔21位元組,buf的每行末位只補3個0x00//24-21=3
平時我們讀取並操作並未考慮4位元組對齊,因為原圖就是4位元組對齊的而此時我們的操作並未變更位元組,如我的上篇部落格做「灰度變換」。變更時而不對齊其結果就是影象傾斜(windows影象顯示是按照4位元組對齊的)。
詳解4位元組對齊
摘要 編譯器通常採用的預設位元組對齊規則 對於型別t,在n bit系統中,保證變數首位址在min sizeof t n 8 位元組位置上,以保證最少讀週期。以下為原文 其實我也是一條分割線 所謂的位元組對齊,就是各種型別的資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這個就是對齊。我...
詳解4位元組對齊
摘要 編譯器通常採用的預設位元組對齊規則 對於型別t,在n bit系統中,保證變數首位址在min sizeof t n 8 位元組位置上,以保證最少讀週期。以下為原文 其實我也是一條分割線 所謂的位元組對齊,就是各種型別的資料按照一定的規則在空間上排列,而不是順序的乙個接乙個的排放,這個就是對齊。我...
詳解4位元組對齊
什麼是4位元組對齊?4位元組對齊有什麼好處,有什麼壞處?分析一波。首先先定義乙個結構體。typedef struct aa aa aa aa 32位處理器,如果沒有採用4位元組對齊,首先結構體變數aa存放在記憶體中的起始位址為0x00,那麼其成員變數a的起始位址為0x00,成員變數b的起始位址為0x...