#!/usr/bin/perl -l

# Konwersja liczby dwojkowej (w tym przypadku polaczone wartosci
# ASCII dla 'E', 'F', 'G' i 'H') do wektora bitow:
#
$ciag = pack('B*', '01000101010001100100011101001000');

# Wyswietlenie wartosci ciagu $ciag.
#
print $ciag;                        #  wyswietla EFGH

# Wyswietlenie poszczegolnych bitow ciagu $ciag:
# 10100010011000101110001000010010, ktory jest poczatkowym
# ciagiem dwojkowym po odwroceniu poszczegolnych bajtow.
#
foreach (0..31) { print vec($ciag, $_, 1) }

# Inny sposob konwersji liczby do wektora bitow.
# Prosze zauwazyc, iz ta liczba jest za duza 
# (5 znakow * 8 bitow/znak = 40 bitow), aby mozliwe
# bylo uzycie 32-bitowej liczby calkowitej.
#
$ciag = join('', unpack('B*', 'k%n]{'));

# Konwersja liczby szesnastkowej do wektora bitow:
#
$ciag = pack('H*', '3a2d29');       #  $ciag ma postac :-)

# Konwersja ciagu do liczby szesnastkowej.  
# Ta wartosc jest za duza nawet dla 64-bitowej liczby calkowitej, 
# poniewaz sklada si z 12 znakow (96 bitow).  

$hex = join('',unpack('H*','-algorithms-')); #2d616c676f726974686d732d

print $hex;
