2017-06-19 4 views
-1

古い問題のちょっとした文脈... Old version of the question
だから、いくつかのテストの後、数十のブレークポイント...私のコードは壊れていた。 しかし、私はこの機能でどこかにそれを切り捨てていますC# - bool []へのランダムなバイト数とバックがうまくいかない?

 public BigInteger getNum() 
     { 
      BigInteger rtrnVal = 0; 
      int pow = 0; 
      foreach (bool b in _arr) 
      { 
       rtrnVal += (b ? BigInteger.Pow(2, pow) : 0); 
       pow++; 
      } 
      return rtrnVal; 
     } 

そして、この1 ...

 public numToBin(object n) 
     { 
      assignType(n); //Check if the type is valid 
      BigInteger r = new BigInteger(Convert.ToInt32(n)); //Make sure that the type is valid 
      _arr = new List<bool>(); //Refresh the internal array of booleans 
      while (r != 0) //While we arent left with 0... 
      { 
       //if (!first) if (_arr.Last()) r += 1; //If the last one was true, then add one, because we want the ceiling (round up not down) 
       _arr.Add(!r.IsEven); //Add to the list 
       r = r/2; //Divide by two... I think this may potentially be 
      } 
     } 

しかし、それを固定しました!正しい方向に私を指してくれてありがとう!

*私はリストを逆転したときにエラーが発生しました。

+4

問題がどこにあるのか分かっているなら(num 123行(オブジェクトn)メソッド)、疑問を単純化して、失敗したコードと予想される結果の詳細を入れるだけでより明確にすることができます。私はあなたの方法を見ていて、あなたがしていることを理解していません。 – Etienne

+0

Ok コメントを追加します。 –

+1

すべてのメソッド呼び出しを1行に入れ子にするのではなく、別々の行に分割するほうが簡単なので、メソッドの戻り値を調べることができます。 –

答えて

-1
public BigInteger getNum() 
    { 
     BigInteger rtrnVal = 0; 
     int pow = 0; 
     foreach (bool b in _arr) 
     { 
      rtrnVal += (b ? BigInteger.Pow(2, pow) : 0); 
      pow++; 
     } 
     return rtrnVal; 
    } 

そして、この1 ...

public numToBin(object n) 
    { 
     assignType(n); //Check if the type is valid 
     BigInteger r = new BigInteger(Convert.ToInt32(n)); //Make sure that the type is valid 
     _arr = new List<bool>(); //Refresh the internal array of booleans 
     while (r != 0) //While we arent left with 0... 
     { 
      //if (!first) if (_arr.Last()) r += 1; //If the last one was true, then add one, because we want the ceiling (round up not down) 
      _arr.Add(!r.IsEven); //Add to the list 
      r = r/2; //Divide by two... I think this may potentially be 
     } 
    } 

は、コードの正しいバージョンです。

+0

ここには回答がないようです。 –

+0

ここに編集を移動する必要がありますか? –

関連する問題