具有十六进制种子的随机数生成器

时间:2018-01-14 15:39:41

标签: c# hex

我想创建一个随机数生成器,允许用户以字符串的形式提供十六进制种子值。我在C#工作。

我想拥有尽可能多的有效种子。

Random类允许我们使用有符号整数对其进行种子设定。我可以轻松地将正值转换为十六进制,但负值怎么样呢?有符号整数的最大大小为十六进制7FFFFFFF。我理想的解决方案允许我为有符号的int取整个有效数字范围,并为每个数字赋予相应的十六进制值。

基本上,我需要2个函数将给定的signed int转换为相应的十六进制值,反之亦然。

我最初的想法是将任何小于0的int,使用signed int的max值的值创建unsigned int,然后添加小于0的int的绝对值。现在你有一个连续的整数值的范围。将其转换为十六进制,您将获得十六进制值。任何人都可以在我的逻辑中挖洞吗?

1 个答案:

答案 0 :(得分:1)

在负整数和十六进制之间实际上没有任何转换。

class Program
{
    static void Main(string[] args)
    {
        int value = -73651221;
        Console.WriteLine($"Int: {value}");
        var hex = value.ToString("X");
        Console.WriteLine($"Hex: {hex}");
        Console.WriteLine($"Int again: {int.Parse(hex, System.Globalization.NumberStyles.HexNumber)}");
        Console.Read();
    }
}

提供输出:

Int: -73651221
Hex: FB9C2BEB
Int again: -73651221