簡體   English   中英

C# 中的 BigInteger.intValue() 等效項

[英]BigInteger.intValue() equivalent in C#

我正在嘗試將 java 代碼轉換為 C# 並遇到使用 BigInteger 操作的問題。 我在 C# 和 intValue 本身中找到了一些關於 BigInteger 實現的資源。 但沒有關於 C# 中 BigInteger.intValue 等價物的線索。 Java中的定義為:

將此 BigInteger 轉換為 int。 此轉換類似於 Java™ 語言規范第 5.1.3 節中定義的從 long 到 int 的縮小原語轉換:如果此 BigInteger 太大而無法放入 int,則僅返回低 32 位。請注意此轉換可能會丟失有關 BigInteger 值的整體大小的信息,並返回帶有相反符號的結果。

但是在 C# 中使用 (int) 得到類似的結果會導致錯誤:

對於 Int32,值太大或太小。

我也嘗試只使用低字節但沒有成功如果有人幫助,將不勝感激

要獲得 Java 的行為,請屏蔽值的低位並轉換結果:

int result = (int) (uint) (bi & uint.MaxValue);

(這是使用隱式UInt32BigInteger的轉換,以及相反的顯式轉換

暫無
暫無

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

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