我将如何缩短内存地址以便它在 IntPtr 中工作?

How would I shorten a memory address so it works in a IntPtr?

我有问题。所以我正在开发一个能够更改内存中的浮点数的应用程序,但我拥有的地址对于 IntPtr 来说太长了。

这是我的代码:

VAMemory vam = new VAMemory("APP NAME");

IntPtr ad = 0x264A373E7C0;

vam.WriteByte(ad, (Byte)100); 

所以在这个 ^ WriteByte 中它说 IntPtr 地址太长。 我以前使用过此代码并且它有效但不知何故它不适用于此地址。

如果 IntPtr.Size == 4 那么您的程序的目标是 32 位

即使您选择了 AnyCPU 体系结构,自 VS2013 以来,有一个名为 Prefer 32-bit 的项目构建 属性 并且必须在 64bit[ 上关闭它=40=]台机器得到IntPtr.Size == 8.

当使用AnyCPUPerfer 32-Bit风格时,语义如下:

  • 如果进程在32位Windows系统上运行,它作为32位进程运行。 IL 被编译为 x86 机器代码。
  • 如果进程在 64 位 Windows 系统上运行,它将作为 32 位 进程运行。 IL 被编译为 x86 机器代码。
  • 如果进程在 ARM Windows 系统上运行,它将作为 32 位 进程运行。 IL 被编译为 ARM 机器代码。