Boolean in Byte packen

Z

zulu23

Neues Mitglied
0
Hallo zusammen,

Irgendwie habe ich einen Knopf, ich würde gerne diverse Boolsche Werte(true/false) in ein Byte packen und dieses dann übers Netzwerk versenden und auf der anderen seite das Byte wieder in die 8 Boolschen werte auftrennen...nun aber leider habe ich keinen Plan wie ich das hinbekomme.:confused:
Hat vielleicht wer von euch eine Idee wie ich das elegant lösen könnte?:sad:

Besten dank für eure Hilfe!

Gruss

zulu23
 
Einen leichten und eleganten Weg kenne ich nicht. Mit Bit-Operationen kann man das zwar machen, aber allzu leserlich ist das dann auch nicht mehr.

Code:
public static byte booleansToByte(boolean[] myBooleans) {
    byte result = 0;

    //Schleife funktioniert nur wie gewollt, wenn bools.length = 8
    for(int i = 0; i < myBooleans.length; i++) {
        result = (byte) ((result << 1) + (myBooleans[i] ? 1 : 0));
    }

    return result;
}

public static boolean[] byteToBooleans(byte myByte) {
    boolean[] myBooleans = new boolean[8];

    for(int i = 0; i < 8; i++) {
        myBooleans[i] = (myByte << i & 0x80) == 0x80;
    }

    return myBooleans;
}

Was ist der Grund, warum du das so machen willst? Möglichst wenig Daten übertragen?

Wenn das nicht der Grund ist, kannst du nämlich zum Beispiel auch den DataOutputStream verwenden, der hat eine Methode writeBoolean
 
Ich bin mir nicht sicher ob dir das hilft aber seit java 7 kannst du mi 0b 00110011 direkt eingeben und das dann am ende wieder auseinander nehmen. Wie genau das in deinem fall nützlich ist weis ich aber nicht :D
 
@Zoopa...Danke für dein Beispiel...funktioniert soweit für mich auch da ich immer das Byte mit 8 Boolean füttere...

Ich schicke die Byte's mit hilfe von einem OutputStreamWriter über Ethernet an eine SPS-Steuerung um Bit-Zustände abzufragen und umgekehrt...

gruss
matchef
 

Ähnliche Themen

B
Antworten
1
Aufrufe
795
swa00
swa00
D
Antworten
23
Aufrufe
2.484
Data2006
D
OnkelLon
Antworten
13
Aufrufe
1.968
OnkelLon
OnkelLon
Zurück
Oben Unten