我正在分析的一段 C# 中有一行代码。
`random.next(0xf4240, 0x98967f).ToString();'
我知道命令行正在生成指定范围之间的数字并将其作为字符串返回。对我来说有点奇怪的是'0xf'和'0x#####f'
我查了一下 0xf 应该返回一个 nybbie 但我真的很想知道原始值是什么。任何帮助都会很棒。
谢谢。
我正在分析的一段 C# 中有一行代码。
`random.next(0xf4240, 0x98967f).ToString();'
我知道命令行正在生成指定范围之间的数字并将其作为字符串返回。对我来说有点奇怪的是'0xf'和'0x#####f'
我查了一下 0xf 应该返回一个 nybbie 但我真的很想知道原始值是什么。任何帮助都会很棒。
谢谢。
前缀0x
是您在 C# 和许多其他语言中指定十六进制值的方式。我相信十六进制只能指定整数值,尽管我可能错了。
在您的情况下, 0xf4240 与十六进制的 F4240 或十进制的 1.000.000 相同。0x98967f 与十进制的 9.999.999 相同。
有一件事,这段代码显然是故意混淆的,那就是 baaaad。似乎没有必要以十六进制提供这些值。
命令行没有生成任何东西- 您的 C# 应用程序(恰好输出到命令行)正在计算 1000000 到 9999999 之间的伪随机数(您正在传递十六进制表示)。
在 C# 中,0x用作前缀来表示十六进制整数文字。见规格
在您的情况下,f4240
并且98967f
只是以十六进制系统表示的两个整数。
更新:正如@codesparkle 所说,它们分别代表 1000000 和 9999999