c# - मैं बिट्र्रे को एकल int में कैसे परिवर्तित कर सकता हूं?




.net binary (3)

मैं BitArray को एक int कैसे परिवर्तित कर सकता हूं? सबसे तेज़ तरीका pls ...


इस पोस्ट का जवाब देना (# 43 9 35747)। एक मान एक्स छोटा टैप है जहां मैंने दो बिट्स (6 और 10) को नीचे सेट किया है: लघु एक्स = 1;

        var result = X;
        var bitsToSet = new [ ] { 5,9 };
        foreach ( var bitToSet in bitsToSet )
            {
            result+=( short ) Math.Pow ( 2,bitToSet );
            }
        string binary = Convert.ToString ( result,2 );

अब मैं वैल्यू एक्स से विशिष्ट सभी बिट्स को पढ़ना चाहता हूं और इसे सरणी में डाल सकता हूं या थोड़ा प्रकार जैसे बूल वैल 1 = बिट 1, बूल वैल 2 = बिट 2 ....

मैं एक नौसिखिया हूँ और मुझे लगता है कि यह आपके लिए लड़कों के लिए बहुत आसान है ..


यह संस्करण:

  • 64 बिट तक काम करता है
  • बिटएरे कार्यान्वयन विवरण के ज्ञान पर भरोसा नहीं करता है
  • यादृच्छिक रूप से स्मृति आवंटित नहीं करता है
  • कोई अपवाद नहीं फेंकता है (यदि आप अधिक बिट्स की अपेक्षा करते हैं तो चेक जोड़ने के लिए स्वतंत्र महसूस करें)
  • उचित प्रदर्शन से अधिक होना चाहिए

कार्यान्वयन:

public static ulong BitArrayToU64(BitArray ba)
{
    var len = Math.Min(64, ba.Count);
    ulong n = 0;
    for (int i = 0; i < len; i++) {
        if (ba.Get(i))
            n |= 1UL << i;
    }
    return n;
}

private int getIntFromBitArray(BitArray bitArray)
{
    int value = 0;

    for (int i = 0; i < bitArray.Count; i++)
    {
        if (bitArray[i])
            value += Convert.ToInt16(Math.Pow(2, i));
    }

    return value;
}






bcl