为什么字节数组中的字节在C++中被反转

Hit*_* XD 1 c++ byte bytearray endianness

我试图理解的代码覆盖了游戏进程内存(window.h,WriteProcessMemory)的一部分,以便修改游戏中的参数(例如,强度).值很可能是整数

代码尝试使用此函数替换

WriteProcessMemory( GameHandle, (BYTE*)StrengthMemoryAddress, &StrengthValue, sizeof(StrengthValue), NULL);
Run Code Online (Sandbox Code Playgroud)

其中StrengthMemoryAddress是预先计算的动态地址,而StrengthValue如下:

byte StrengthValue[] = { 0x39, 0x5, 0x0, 0x0 };
Run Code Online (Sandbox Code Playgroud)

它取代了1337的实力

我的问题基本上是字节数组如何在这个函数中工作.来自谷歌我知道1337的十六进制值是0x539.

你怎么在字节数组中反转它?我看到他首先将0x39然后放入0x5,我得出的结论可能是以相反的顺序组合到0x539.另外,为什么你最后需要额外的0x0 - 你不能把它留下来吗?

谢谢

gio*_*gim 8

来自谷歌我知道1337的十六进制值是0x539.

或者它是0x00000539,它是相同的但写为4字节整数.现在,如果你在内存中以小端方式写这个整数,你必须按照以下顺序存储它(最低有效字节 - 0x39 - 先行):

Memory Address   Values
1000             0x39  
1001             0x05
1002             0x00
1003             0x00
Run Code Online (Sandbox Code Playgroud)

这与字节序有关.您可能想要阅读有关该主题的更多信息.