Salve a tutti, ho un piccolo problemino, sara' la tarda ora, ma non riesco a ravvedermi...

Ho questo codice in perl:
codice:
sub encode_7bit {
    my($self, $msg) = @_;
   
    my($bit_string, $user_data) = ('','');
    my($octet, $rest);
    
    defined($msg) && length($msg) || return('00');   # Zero length user data.

    for(split(//,$msg)) {
        $bit_string.=unpack('b7',$_);
    }

    while(defined($bit_string) && (length($bit_string))) {
        $rest = $octet = substr($bit_string,0,8);
        $user_data .= unpack("H2",pack("b8",substr($octet.'0'x7,0,8)));
        $bit_string = (length($bit_string) > 8) ? substr($bit_string,8) : '';
    }
    
    sprintf("%02X", length($rest) < 5 ? length($user_data)-1 : length($user_data)).uc($user_data);
}
Come faccio a trasformarlo in php?
Mi perdo nelle funzioni di unpack e pack quando usano il parametro b8 e b7, in php non è siupportato, ma in teoria esisterebbe qualche strada alternativa..