2015-06-11 6 views
5

में बड़ी संख्या मुझे एक विधि बनाना है जो सत्यापित करता है कि कोई संख्या किसी निश्चित संरचना का पालन करती है या नहीं, और इसे PHP में लागू मौजूदा पैटर्न का पालन करना होगा, लेकिन मुझे सी # .NET में thins करने में कुछ परेशानी हो रही है। जब नंबर बहुत लंबा चला गया मैं एक System.OverflowException मिला है, मैं Ulong उपयोग कर रहा हूँ, एक बार देख ले:सी # .NET

/// <summary> 
    /// Gera um dígito verificador para um código 
    /// </summary> 
    /// <param name="code">Código</param> 
    /// <returns>Digito verificador</returns> 
    public static ulong GenerateTrustID(UInt64 code) 
    { 
     UInt64 intcode = 1; 
     UInt64 endcode = 0; 

     foreach (UInt64 number in code.ToString().ToCharArray().Select(Convert.ToInt64).ToArray()) 
     { 
      UInt64 newcode = (number * code * intcode); 

      char[] chrcode = newcode.ToString().ToCharArray(); 
      Array.Reverse(chrcode); 
      intcode = UInt64.Parse((new string(chrcode))); 
     } 

     if (intcode.ToString().Length < 2) 
     { 
      intcode = 04051995; 
      intcode = intcode * 88; 
     } 

     endcode = UInt64.Parse(intcode.ToString().GetLast(2)); 

     return endcode; 
    } 

और मैं नीचे दिए गए कोड पुन: पेश करने के लिए है: वास्तव में के लिए

/** 
* @brief Gera uma ID de verificação para um código em um esquema privado. 
* @param int $code Código para o qual será gerado o ID de verificação 
* @return int 
*/ 
public function generateTrustID($code){ 
    $intcode = 1; 
    $endcode = null; 
    $numbers = array_map('intval', str_split($code)); 

    foreach($numbers as $number){ 
     $intcode = (int)strrev($number * $code * $intcode); 
    } 

    if(strlen($intcode) < 2){ 
     $intcode = 04051995; 
     $intcode = $intcode * 88; 
    } 

    $endcode = substr($intcode, 0, 2); 

    return $endcode; 
} 

उत्तर

3

बड़ी संख्या में आप BigInteger Class का उपयोग कर सकते हैं।

आप इसे उपयोग करने के तरीके के बारे में अधिक जानकारी के लिए यह article भी पढ़ सकते हैं।

1

आप BigInteger का उपयोग UInt64 से अधिक संख्याओं को स्टोर करने के लिए कर सकते हैं।

इस काम के लिए सबसे पहले आपको अपने परियोजना संदर्भों में System.Numeric लाइब्रेरी जोड़ा जाना चाहिए।

और कहा कि इस तरह का उपयोग करें:

BigInteger bigInt = 6546546546556565446;