我有两个问题。它们都与 C++ 中的空白有关,我正在尝试用 C# 翻译。
C++ 代码
void Func_X_2(LPBYTE stream, DWORD key, BYTE keyByte)
{
stream[0] ^= (stream[0] + LOBYTE(LOWORD(key)) + keyByte);
stream[1] ^= (stream[1] + HIBYTE(LOWORD(key)) + keyByte);
stream[2] ^= (stream[2] + LOBYTE(HIWORD(key)) + keyByte);
stream[3] ^= (stream[3] + HIBYTE(HIWORD(key)) + keyByte);
stream[4] ^= (stream[4] + LOBYTE(LOWORD(key)) + keyByte);
stream[5] ^= (stream[5] + HIBYTE(LOWORD(key)) + keyByte);
stream[6] ^= (stream[6] + LOBYTE(HIWORD(key)) + keyByte);
stream[7] ^= (stream[7] + HIBYTE(HIWORD(key)) + keyByte);
}
第一个问题:
DWORD 是 UInt32,BYTE 是字节,但 LPBYTE 是什么?如何将其用作数组?
第二个问题:
如何在 C# 中使用 LOBYTE、HIBYTE、LOWORD、HIWORD?
编辑
这就是函数的调用方式:C++ 代码
Func_X_2((LPBYTE)keyArray, dwArgs[14], keyByte);
keyArray 是一个 DWORD(UInt32),dwArgs 是一个 dword 数组。KeyByte 是一个字节。
提前致谢。