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

时间:2018-06-10 10:37:56

标签: c# memory byte intptr

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

这是我的代码:

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

IntPtr ad = 0x264A373E7C0;

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

所以在这个^ WriteByte中它说IntPtr地址太长了。 我以前使用过这段代码并且它已经工作但不知何故它不能使用这个地址。

1 个答案:

答案 0 :(得分:0)

如果IntPtr.Size == 4,则您的计划定位 32位

即使您选择了AnyCPU架构,自VS2013起,还有一个名为Prefer 32-bit的项目构建属性,必须在 64位机器上关闭它才能获得IntPtr.Size == 8 1}}。

使用Perfer 32-Bit的{​​{1}}风格时,语义如下:

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