“0n0”是什么意思?

20

Windbg 中的 0n0 是什么意思?我的 windbg 显示全部本地变量为 0n1500


n是代表.NET数字的意思 :) 开玩笑的! - pmg
3
缩写为“哦,不!别逼我使用唠叨话!” - Robᵩ
3个回答

23

'0n' 是在 Windbg 中用来表示十进制数的前缀。这使得非前缀形式可以被用于表示十六进制。

编程愉快。


12

这是关于十进制的 MASM 语法,类似于十六进制的 0x。


2

0n表示十进制,即在n后显示的数字以十进制表示法

可能的取值如下:
0n - 十进制
0x - 十六进制
0t - 八进制
0y - 二进制

您可以使用n命令更改数字数据显示和输入的默认显示基数(底数)。

n16 - 切换为十六进制
n10 - 切换为十进制
n8 - 切换为八进制

请注意,不允许使用n2

以下内容来自在调试程序时的WinDBG命令窗口。 我正在尝试从进程环境块(PEB)中获取操作系统的构建版本号。 我正在使用Win10 19044版本。
0:000> n 16
base is 16
0:000> ?? @$proc->OSBuildNumber
unsigned short 0x4a64
0:000> n 10
base is 10
0:000> ?? @$proc->OSBuildNumber
unsigned short 0n19044
0:000> n 8
base is 8
0:000> ?? @$proc->OSBuildNumber
unsigned short 0t45144

请注意,这仅适用于数值数据类型,而其他类型(如指针)无论使用哪个参数,都将以十六进制显示。
0:000> n 8
base is 8
0:000> ?? @$proc->ImageBaseAddress
void * 0x00007ff6`6dfa0000
0:000> n 10
base is 10
0:000> ?? @$proc->ImageBaseAddress
void * 0x00007ff6`6dfa0000
0:000> n 16
base is 16
0:000> ?? @$proc->ImageBaseAddress
void * 0x00007ff6`6dfa0000

ImageBaseAddress 是一个 void * 类型(指针类型),因此不受 n 命令的影响。 我们显然可以进行显式类型转换。

0:000> n 10
base is 10
0:000> ?? DWORD(@$proc->ImageBaseAddress)
DWORD 0n1845100544
0:000> n 16
base is 16
0:000> ?? DWORD(@$proc->ImageBaseAddress)
DWORD 0x6dfa0000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接