"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