0

我正在分析的一段 C# 中有一行代码。

`random.next(0xf4240, 0x98967f).ToString();'

我知道命令行正在生成指定范围之间的数字并将其作为字符串返回。对我来说有点奇怪的是'0xf'和'0x#####f'

我查了一下 0xf 应该返回一个 nybbie 但我真的很想知道原始值是什么。任何帮助都会很棒。

谢谢。

4

3 回答 3

2

前缀0x是您在 C# 和许多其他语言中指定十六进制值的方式。我相信十六进制只能指定整数值,尽管我可能错了。

在您的情况下, 0xf4240 与十六进制的 F4240 或十进制的 1.000.000 相同。0x98967f 与十进制的 9.999.999 相同。

有一件事,这段代码显然是故意混淆的,那就是 baaaad。似乎没有必要以十六进制提供这些值。

于 2012-09-19T17:32:11.857 回答
1

命令行没有生成任何东西- 您的 C# 应用程序(恰好输出到命令行)正在计算 1000000 到 9999999 之间的伪随机数(您正在传递十六进制表示)。

于 2012-09-19T17:32:54.103 回答
0

在 C# 中,0x用作前缀来表示十六进制整数文字。见规格

在您的情况下,f4240并且98967f只是以十六进制系统表示的两个整数。

更新:正如@codesparkle 所说,它们分别代表 1000000 和 9999999

于 2012-09-19T17:38:40.643 回答