【问题标题】:How can I check if a given address is 32-bit or 64-bit?如何检查给定地址是 32 位还是 64 位?
【发布时间】:2021-12-10 00:42:13
【问题描述】:

如何检查长变量中的地址值是32位还是64位

例子:

long a = 0x06000000
long b = 0x13FFF0000

如何以编程方式检查这些地址的位数?

【问题讨论】:

  • 32 位地址也是 64 位地址,因为 0x1 和 0x00000001 是同一个数字和同一个地址。您的意思是检查您的进程是否在 64 位模式下运行?或者您的意思是查看给定数字是否适合 32 位寄存器?
  • 如果您的应用在 Windows 上作为 32 位进程运行,则它根本无法访问 64 位内存。 WOW64 层会阻止它。
  • @MiguelVentura 第二个选项

标签: c# 32bit-64bit memory-address


【解决方案1】:

您可以使用 AND 运算来检查是否设置了高 32 位。假设你有ulong,因为地址不是负数:

if ((x & 0xFFFFFFFF00000000UL) == 0)
    Console.WriteLine("x would fit into 32 bit");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2014-08-04
    • 1970-01-01
    • 2014-12-24
    • 2012-07-29
    • 1970-01-01
    • 2017-09-13
    相关资源
    最近更新 更多