所以我正在從VC++移植一小段代碼到.NET。我一直是一個VB人,在C#中涉獵不多,對VC++幾乎沒有任何認識。是的,我知道,嘗試使用一種你一無所知的語言來代碼轉換可能是一個糟糕的主意,但我並不認爲花時間學習語言的輸入和輸出是爲了移植一個語言幾百行代碼。我已經學會了足夠多的東西來學習它,但我仍然不清楚哪些東西。這裏是VC++代碼:VC++到VB.NET代碼轉換
#define ES16(_val) \
((u16)(((((u16)_val) & 0xff00) >> 8) | \
((((u16)_val) & 0x00ff) << 8)))
#define ES32(_val) \
((u32)(((((u32)_val) & 0xff000000) >> 24) | \
((((u32)_val) & 0x00ff0000) >> 8) | \
((((u32)_val) & 0x0000ff00) << 8) | \
((((u32)_val) & 0x000000ff) << 24)))
#define ES64(_val) \
((u64)(((((u64)_val) & 0xff00000000000000ull) >> 56) | \
((((u64)_val) & 0x00ff000000000000ull) >> 40) | \
((((u64)_val) & 0x0000ff0000000000ull) >> 24) | \
((((u64)_val) & 0x000000ff00000000ull) >> 8) | \
((((u64)_val) & 0x00000000ff000000ull) << 8) | \
((((u64)_val) & 0x0000000000ff0000ull) << 24) | \
((((u64)_val) & 0x000000000000ff00ull) << 40) | \
((((u64)_val) & 0x00000000000000ffull) << 56)))
有人可以解釋這是怎麼回事嗎?也許可以提供一些關於如何在VB.NET中重寫的內容(儘管如果我知道發生了什麼,我肯定可以自己重寫它,哈哈)。
一如既往,在此先感謝大家。
在我看來,它是交換字節/字/雙字順序(字節順序轉換) – Zenilogix
這是在小端和大端之間轉換的字節反轉代碼。您可以使用BitConverter.GetBytes()和Array.Reverse()或使用Skeet的MiscUtil。 –