2017-04-05 189 views
0

我創建一個應用程序,它會做this video - The Everything Formula將字符串轉換二進制爲10進制

顯示我建議你看它理解這個公式。我試圖複製視頻的一部分,然後獲取'k'(y座標)。我將圖像的每個像素都放入一個包含二進制版本的字符串中。二進制數的長度非常大,我不能將它存儲爲int或long。

現在,這裏是我無法解決的部分。

我該如何將包含二進制數字的字符串轉換爲字符串格式的基本10數字?

不能使用long或int類型,它們不夠大。任何使用int類型的轉換都不起作用。

示例代碼:

public void GraphUpdate() 
    { 
     string binaryVersion = string.Empty; 

     for (int i = 0; i < 106; i++) 
     { 
      for (int m = 0; m < 17; m++) 
      { 
       PixelState p = Map[i, m]; // Map is a 2D array of PixelState, representing the grid/graph. 

       if (p == PixelState.Filled) 
       { 
        binaryVersion += "1"; 
       } 
       else 
       { 
        binaryVersion += "0"; 
       } 
      } 
     } 

     // Convert binaryVersion to base 10 without using int or long 
    } 

public enum PixelState 
{ 
    Zero, 
    Filled 
} 
+1

「我建議你看它理解這個」 --- :-D – zerkms

+0

「我將如何轉換包含二進制數字符串轉換成十進制數也是字符串格式? 「如果你給我們一個你想要轉換的字符串的例子,而不是強制我們編譯和調試一個示例代碼,那更好。 – ElektroStudios

+0

在它的核心,'String'只是一個'Bytes'的數組 - 你可以返回一個數組嗎? –

回答

1

可以使用的BigInteger類,這是的.NET 4.0部分。 請參閱MSDN BigInteger Constructor,它將輸入byte []。 這個字節[]是你的二進制數。
可以通過調用BigInteger.ToString()來檢索結果字符串

+0

從二進制字符串到字節[]的轉換可以在[這裏]找到(http://stackoverflow.com/questions/3436398/convert-a-binary-string-representation-to-a-byte-array) – sulo

0

嘗試使用Int64。這對於高至9,223,372,036,854,775,807:

using System; 

namespace StackOverflow_LargeBinStrToDeciStr 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Int64 n = Int64.MaxValue; 
      Console.WriteLine($"n = {n}"); // 9223372036854775807 

      string binStr = Convert.ToString(n, 2); 
      Console.WriteLine($"n as binary string = {binStr}"); // 111111111111111111111111111111111111111111111111111111111111111 

      Int64 x = Convert.ToInt64(binStr, 2); 
      Console.WriteLine($"x = {x}"); // 9223372036854775807 

      Console.ReadKey(); 
     } 
    } 
} 
相關問題