簡體   English   中英

如何在統一上存儲256位整數?

[英]How can I store 256-bit integer on unity?

我嘗試使用Unity的BigInteger實現,但它仍然溢出(或者我可能以錯誤的方式使用?我也不確定,它只能執行20個字符的整數,如64位)....這就是我的事情有效,我有一個64字符的十六進制,然后我做關節計算,我想先將其轉換為十進制形式並將其存儲在變量中。

 public BigInteger x = 0; 

然后在這里溢出... HexToDecimal是一個函數,它接受一個十六進制字符串並返回其十進制形式。

x = HexToDecimal(十六進制);

HexToDecimal的示例輸出是

105627842363267744400190144423808258002852957479547731009248450467191077417570

這是我想要存儲的數字的理想大小。 如果我使用非常小的數字,如數十萬或其他東西,它的作用。 但BitInteger有點限制它只有20個字符,因為我試圖聲明這樣的變量,只知道BitInteger限制我的位置

public BigInteger x = 10000000000000000000

當我在那里添加另一個“0”時,它會拋出一個錯誤,指出積分太大

你實例化BigInteger方法是一個較小數字便捷方法 (參見“實例化一個BigInteger” - 我似乎無法直接鏈接到它)。 這意味着您實際上是在創建int32或int64,然后將其轉換為BigInteger(因此它必須能夠適應這些類型的有限大小)。

要真正利用BigInteger的任意大小,您可能希望使用BigInteger.Parse(String) 這個方法將為一個數字字符串返回一個BigInteger(它必須是一個數字字符串,由當前系統文化定義 - 除了可能的前導否定符號之外別無其他)此方法在Unity中完全正常,因為它是C#的一部分標准庫。

因此,對於您的HexToDecimal示例,假設它返回一個字符串,您就像使用它一樣

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM