簡體   English   中英

C#Biginteger用於大量位數

[英]C# Biginteger for huge number of bits

我想知道是否有使用C#存儲大量數字的有效方法。 我想創建一個由960字節組成的數字,但BigInteger無法容納它。 如有任何建議,我將不勝感激。

更新:我正在使用隨機字節生成器來填充BigInteger構造函數所需的數組。 對於960字節數組,我的BigInteger返回負數。

static void Main(string[] args)
{
    var arr = new byte[960];

    for (int i = 0; i != arr.Length; i++)
    {
        arr[i] = byte.MaxValue;
    }

    var big = new BigInteger(arr);
}

的效果很好,結果為-1因為數字的表示形式是兩者的補碼 這意味着二進制中只有1 s的數字始終解析為-1,如您在本文中所見。


如果再增加一個“長度”並將數組的最后一個元素設置為零,則應該得到一個代表您的二進制數的正數(此字節不會對您造成傷害):

var arr = new byte[961];
arr[arr.Length-1] = 0;
var big2 = new BigInteger(arr);

但是您真的應該確定您的二進制數是什么格式以及BigInteger正在“讀取”什么格式

暫無
暫無

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

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