2012-11-22 71 views
-1

這真的很煩人,我有兩個十六進制數字,我90%確定其中一個正好高出2個增量。但是,當我把它們輸入到一個在線十六進制到十進制計算器時,它們都是一樣的。怎麼會這樣?爲什麼這兩個十六進制數字出現在在線計算上的相同整數?

lower number at 
0x00010471000001BF001F = 18766781122258862000 

higher number at 
0x00010471000001BF0021 = 18766781122258862000 

?到底是怎麼回事 ?

我使用的計算值是... http://www.rapidtables.com/convert/number/hex-to-decimal.htm

+1

一個更高? 1F + 1 = 20,而不是21 ... –

+0

已更新!感謝您的信息 – Exitos

回答

2

越高數爲2以上的代替1. 0x00010471000001BF0020是介於兩者之間。我認爲你的問題與溢出問題有關,因爲數字非常大。可能您正在使用的計算器正在將這些值轉換爲浮點,這會降低準確性。

值您發佈至少需要9個字節來表示(或至少65位)

0

六角首先基本知識應該告訴你,20樓和21之間,因此,最高的數字是低數字+2。 其次,如果您使用未知工具,則必須確保其可靠。你的工具顯然不能處理這麼大的數字。 Wolfram Alpha的給你正確答案: http://www.wolframalpha.com/input/?i=0x00010471000001BF001F+in+decimal http://www.wolframalpha.com/input/?i=0x00010471000001BF0021+in+decimal

+0

Ksempac這只是一個錯字。 – Exitos

+0

首先,我不知道這一點,第二我沒有發佈這只是爲了指出錯誤,我給你正確的答案(以及如何解決將來的類似問題,Wolfram Alpha致力於科學查詢)。 .. – Ksempac

0

首先第一件事情,你爲什麼要在C#標籤分類下這個問題? 問題最大的原因是價值太大,轉換器不適用於大數字。

僅僅因爲這是用C#標記的。 添加對.NET組件System.Numerics的引用。 要從大十六進制轉換爲整數使用BigInteger。

 System.Numerics.BigInteger a; 
     System.Numerics.BigInteger.TryParse("00010471000001BF001F", System.Globalization.NumberStyles.HexNumber,null,out a); 
     Console.WriteLine(a.ToString()); 
     System.Numerics.BigInteger.TryParse("00010471000001BF0021", System.Globalization.NumberStyles.HexNumber, null, out a); 
     Console.WriteLine(a.ToString()); 

輸出

18766781122258862111 
18766781122258862113 
相關問題