Wie setze ich Bitarray so ein, dass spezifische Bits basierend auf dem Wert festgelegt werden?C#

Ein Treffpunkt für C#-Programmierer
Guest
 Wie setze ich Bitarray so ein, dass spezifische Bits basierend auf dem Wert festgelegt werden?

Post by Guest »

Wie kann ich Bitarray verwenden, um ein paar Dinge so einfach zu machen, und setzt einen Wert auf Bits, nicht nur auf Bits! Ich beginne zu bereuen, jemals diesen Mist namens Bitarray verwendet zu haben.

Code: Select all

public enum RULE
{
NOTHING = 0x0,
FIRST_STEP = 0x1,
FOO_YOU = 0x2,
BAR_FOO = 0x10,
FOO = 0x20,
BAR = 0x40,
FOO_BAR = 0x80,
READY = 0x100,
...//LOTS MORE BITS
FINAL_FLAG_BIT= 0x10000000 //Final bit.. uses the 29th bit.
};
< /code>

Sagen Sie jetzt, ich mache das .. < /p>

//only use 29 bits to save memory, probably still uses 4 bytes lol.
BitArray rules= new BitArray(29);

//As you can see what I tried to do.
public bool ruleEnabled(RULE i)
{
return rules[(int)i]; //

Ich habe also ungefähr 30 Minuten damit verschwendet, dies zu implementieren, ohne eine dieser Einschränkungen zu kennen. Sie wissen, dass es nicht einmal eine Möglichkeit gibt, sie auf den Wert zu werfen. Ohne CopyTO 


habe ich also nur 1 Variable verwendet (scheinen diese Lösung sowohl sauberer als auch schneller) und musste nur 2 Methoden SetRule damit ordnungsgemäß funktioniert. < /p>

Code: Select all

private int rules; //uses only 29 of the 32 bits.
public bool ruleEnabled(RULE i)
{
int bits = (int)i;
return (rules & bits) == bits;
}

public void setRule(RULE rule, bool set) {
if (set)
rules |= (int)rule;
else
rules &= ~(int)rule;
}
< /code>

Meine Frage ist, dass ich das Richtige getan habe? Und warum ist der Bitarray jemals nützlich? Wenn es so viele Einschränkungen gibt, können Sie alle Vorgänge wie und 
oder nicht xor bereits mit & | ~ ausführen ^

Ich denke, Bitarray wird am besten verwendet, wenn Sie mit mehr Bits zu tun haben, dann kann jeder Datentypen .. für Kompressionen/Verschlüsse usw. darstellen. .

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post