使用C++(具體來說,應該把這個更早),我將原始紋理數據存儲在無符號字節數組中,以RGBA格式存儲,每像素32位(8使用Alpha的每個顏色值的位數,等等等等......)。關鍵是,我想寫一個返回原始數據作爲陣列的色彩,其中一個顏色定義爲下面的一個結構的函數:將無符號字節數組轉換爲Structs數組
struct Color
{
uint8 r;
uint8 g;
uint8 b;
uint8 a;
};
加上功能和諸如此類的東西,但這些都是唯一的變量在結構中。我的想法是,由於每種顏色都是4字節長,我可以以某種方式將原始字節數組轉換爲原始大小的1/4(顏色數組的長度,而不是絕對大小)的顏色數組。我認爲reinterpret_cast是我正在尋找的東西,但是在谷歌搜索之後我找不到任何東西,它確認100%可以將它轉換爲一個結構數組而不是一個結構。
所以我想我只是要求別人確認這確實可能與reinterpret_cast
,或者如果有不同的演員或方式來做到這一點。謝謝。
編輯:我的措辭有點奇怪,所以作爲一個任意的例子,我想以某種方式將16個無符號字節的數組轉換爲4種顏色的數組。
編輯:另外我知道它有點晚了,但我似乎無法找到如何將數組的一小部分在一個特定的地方使用reinterpret_cast鑄造到一個單一的結構,如果這是可能的,而不需要複製到一個更小的陣列並像這樣投射。所以對這個問題的任何幫助也將不勝感激。
除了'uint8'沒有指定標準型,你可能會因爲你想要做的事而成爲_padding_的受害者。你應該非常確定你必須申請一個'reinterpret_cast <>',否則你的冰箱可能爆炸或者可能發生任何其他意外(==未定義)的行爲! –
您可以通過簡單排除所有其他類型的演員來到達「reinterpret_cast」選項。 Const_cast,static_cast和dynamic_cast在你的情況下肯定不起作用。 – Oleg
抱歉應該更具體。我有一個全局包含文件,它將uint8定義爲'uint8_t',它在GCC(也可能是其他人,但我只使用GCC)中定義爲'unsigned char',我使用GCC。 – sm81095