# byte -> einzelne bits auslesen ???



## Pirol (17. Apr 2004)

Hallo, 

ich möchte ein BitSet in einer Datei speichern. Da die Daten aber nicht Klartext sondern verschlüsselt gespeichert werden kann ich mit writeObject() nicht arbeiten. 
Ich habe mir eine Methode geschrieben, die aus meinem BitSet ein byte[] macht. Allerdings habe ich beim umgekehrten Weg Probleme. 

Wie kann ich bei einem byte überprüfen welche bits gesetzt sind? 

Gibt es gute Standardlösungen für das Umsetzten von BitSets in byte[]? 

Gruß Pirol


----------



## Beni (18. Apr 2004)

Das Überprüfen ist ganz einfach:

```
byte value = ...
int bit = ... // Index des Bits, das gelesen werden soll

boolean is = ((b >> bit) & 1 ) == 1;
```

mfg Beni


----------



## Pirol (18. Apr 2004)

ahh cool, danke. das bitshifting habe ich nicht so recht durchschaut

hattest nen kleinen schreibfehler


```
byte b = ... 
int bit = ... // Index des Bits, das gelesen werden soll 

boolean is = ((b >> bit) & 1 ) == 1;
```

habs aber trotzdem begriffen 


denke mal, dass man einzelne bits genauso leicht setzen kann oder?

wie würde das aussehen, wenn ich einzelne bits in einem byte setzen will?


----------



## Beni (18. Apr 2004)

Pirol hat gesagt.:
			
		

> hattest nen kleinen schreibfehler


Hupps  :shock: 

Hier die andere Richtung:


```
// bit: eine Zahl von 0 bis 7.  ( 0, 1, true ) gibt z.B. 2
    public static byte set( byte original, int bit, boolean value ){
        if( value )
            return (byte)(original | (1 << bit));
        else
            return (byte)(original & ~(1 << bit));
    }
```

mfg Beni


----------



## Pirol (18. Apr 2004)

geilo, vielen dank. funktioniert einwandfrei


----------

