簡體   English   中英

C ++ DWORD *到BYTE *

[英]C++ DWORD* to BYTE*

我的問題,我正在嘗試將DWORD類型的動態內存和數組轉換為BYTE。 足夠公平,我可以循環瀏覽並將每個條目的DWORD轉換為BYTE。

但是他們是這樣做的更快方法嗎? 拿一個指向DWORD數據的指針並將整個數據轉換成一個指向BYTE數據的指針? 例如使用memcpy操作?

我覺得這是不可能的,因為我嘗試測試這兩種方法,但似乎無法在我的第二個解決方案上找到解決方案,因此我不希望僅對我的方法提供經驗豐富的意見。

感謝您的任何輸入,再次沒有答案只是朝着正確的方向。 我認為這也不是一個家庭作業問題,必須提到。

這實際上取決於最終要實現的目標。 如果有,例如:

DWORD *x;
x = new DWORD[100];

// x gets filled in somehow

而且,您只想單獨處理每個DWORD的每個字節,然后執行您建議的操作(例如,使用memcpy)即可。 但是,您可以使用reinterpret_cast將數組作為BYTE數組處理,例如

BYTE *y = reinterpret_cast<BYTE *>(x);

或類似的東西。

如果您不關心字節序,您可以只進行static_cast<BYTE*>(array_ptr)交換字節順序(如果您使用小字節序),如果您關心字節序,則需要使用事先進行字節交換(字節交換有一個x86內在函數 )。

如果您需要一個副本,則只需分配足夠的空間,然后使用endian fixup進行memcpy或副本循環。

DWORD array[10];
BYTE* byteArray = array;
byteArray[0] ....

像這樣?

如果DWORD和BYTE的長度相同,則為是。 否則,您將需要單獨調整每個元素的大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM