gpt4 book ai didi

c# - 如何统一存储 256 位整数?

转载 作者:太空狗 更新时间:2023-10-30 01:13:33 25 4
gpt4 key购买 nike

我尝试为 Unity 使用 BigInteger 实现,但它仍然溢出(或者我用错了方式?我也不确定,它只能做 20 个字符的整数,就像 64 位)......这个我的东西是这样工作的,我有一个有 64 个字符的十六进制,然后为了进行算术计算,我想先将它转换成十进制形式并将其存储在变量中。

public BigInteger x = 0;

然后在这里溢出... HexToDecimal 是一个函数,它接受一个十六进制字符串并返回它的十进制形式。

x = HexToDecimal(hex);

HexToDecimal 的示例输出是

105627842363267744400190144423808258002852957479547731009248450467191077417570

这是我要存储的数字的理想大小。如果我使用非常小的数字(例如数十万之类),它就会起作用。但是 BitInteger 有点限制它到 20 个字符只是因为我尝试声明一个这样的变量,只是想知道 BitInteger 限制我的地方

public BigInteger x = 10000000000000000000

当我在那里添加另一个“0”时,它会抛出一个错误,指出积分太大

最佳答案

实例化 BigInteger 的方式是 convenience method for smaller numbers (请参阅“实例化 BigInteger”——我似乎无法直接链接到它)。这意味着您实际上正在创建一个 int32 或 int64,然后将其转换为 BigInteger(因此它必须能够适应这些类型的有限大小)。

要真正利用 BigInteger 的任意大小,您可能需要使用 BigInteger.Parse(String) .此方法将为数字字符串返回一个 BigInteger(并且它必须是当前系统文化定义的数字字符串——除了可能的前导负号外别无其他)此方法在 Unity 中应该工作得很好,因为它是 C# 的一部分标准库。

因此,对于您的 HexToDecimal 示例,假设它返回一个字符串,您可以像这样使用它

x = BigInteger.Parse(HexToDecimal(hex));

关于c# - 如何统一存储 256 位整数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49568287/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com