第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++ unsigned char* 轉(zhuǎn) int*,操作符重載,隱式類型轉(zhuǎn)換

C++ unsigned char* 轉(zhuǎn) int*,操作符重載,隱式類型轉(zhuǎn)換

C++
慕姐8265434 2018-07-22 09:30:25
unsigned char * data; data是內(nèi)存連續(xù)的數(shù)組,size很長,需要轉(zhuǎn)換成 int * ints;其中 每三個char組合一個int比如ints[0] = (data[0]<< 16) | (data[1]<< 8 ) | data[2] ;我不希望用for循環(huán)遍歷算出來,以及頻繁的內(nèi)存拷貝操作,效率太低下面是我沒走通的路子:typedef struct int24 {     uchar r, g, b;     operator int() {             return b | (g << 8) | (r << 16);     } } unsigned char * data = ... int24 * tmp = (int24 * ) data; int *  ints = (int * ) tmp;使用int * ints = (int * ) tmp毫無意義,還是指針轉(zhuǎn)換,沒能應(yīng)用到重載操作符類型轉(zhuǎn)換最終結(jié)果是得到int * ,是否有別的方法?望指教。
查看完整描述

1 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超4個贊

24bit寫來寫去效率都不可能高,因?yàn)閿?shù)據(jù)不對齊。底層硬件就決定了這一點(diǎn),在c++層面折騰只是徒勞。
數(shù)據(jù)不對齊意味著產(chǎn)生的機(jī)器指令的load/store都是交錯的,完全浪費(fèi)了cpu的fetch
需要搞清楚你的上層需求,然后完整地考慮這個問題。

查看完整回答
反對 回復(fù) 2018-07-24
  • 1 回答
  • 0 關(guān)注
  • 1765 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號