如何检查给定地址是 32 位还是 64 位?
Posted
技术标签:
【中文标题】如何检查给定地址是 32 位还是 64 位?【英文标题】:How can I check if a given address is 32-bit or 64-bit? 【发布时间】: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 第二个选项 【参考方案1】:您可以使用 AND 运算来检查是否设置了高 32 位。假设你有ulong
,因为地址不是负数:
if ((x & 0xFFFFFFFF00000000UL) == 0)
Console.WriteLine("x would fit into 32 bit");
【讨论】:
以上是关于如何检查给定地址是 32 位还是 64 位?的主要内容,如果未能解决你的问题,请参考以下文章