Hi,
Wie kann ich mit Perl einzelne Bits aus einem Byte (Zahl) abfragen? Ich habe einen Bitkodierten Zustand und möchte den auch elegant abfragen.
Ich steh da grade völlig aufm Schlauch.
Mit freundlichen Grüßen
Jens Puruckherr
Am Fri den 13 Feb 2004 um 08:56:39AM +0100 schrieb Jens Puruckherr:
Hi,
Wie kann ich mit Perl einzelne Bits aus einem Byte (Zahl) abfragen? Ich habe einen Bitkodierten Zustand und möchte den auch elegant abfragen.
Geht mit dem bitweisen und Operator & z.B. sowas n & 4 != 0
bedeutet, das das 3. Bit == 2^2=4 gesetzt ist (man muß hier mit 0 anfangen zu zählen, also 1. Bit = 0^2=1). Auf Kombinationen von Bits kann man dann testen, indem du einfach alle Werte für die gewünschten Bits addierst... .
HTH,
andre
"Jens Puruckherr" jpuruckherr@cyberport.de writes:
Wie kann ich mit Perl einzelne Bits aus einem Byte (Zahl) abfragen? Ich habe einen Bitkodierten Zustand und möchte den auch elegant abfragen.
Ohne Perl-ish elegant zu sein:
#! /usr/bin/perl
use strict; use warnings;
# Bitkette my $funkybitstream = 'A'; # 0100 0001
# lesbarer String my $bits_highesfirst = unpack ('B8', $funkybitstream); print $bits_highesfirst."\n\n";
# mit unpack my $bits_lowestfirst = unpack ('b8', $funkybitstream); my @bitarray = split (//, $bits_lowestfirst); foreach my $bitpos (0 .. 7) { print "Bit $bitpos = "; if ($bitarray[$bitpos]) { print "1\n"; } else { print "0\n"; } } print "\n";
# mit Bit-Operator '&' my $bit0 = chr (1); my $bit1 = chr (2); my $bit2 = chr (4); # ... my $affe = chr (64);
if ($funkybitstream & $affe) { print "Affe-Bit (Bit 6) gesetzt\n"; } else { print "Affe-Bit (Bit 6) nicht gesetzt\n"; }
Über pack/unpack wollen wir demnächst mal bei den Perl-Mongers reden.
GreetinX Steffen
Am 13. Februar 2004 schrieb Jens Puruckherr:
Wie kann ich mit Perl einzelne Bits aus einem Byte (Zahl) abfragen?
$ perldoc -f vec
Torsten
lug-dd@mailman.schlittermann.de