Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Da PERL a PHP

  1. #1

    Da PERL a PHP

    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..
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  2. #2
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Innanzituttograzie per aver risposto...
    conosco già unpack e pack di php ma i template b e B non vengono contemplati.

    P.S. Solo per il nome (anch'io Santino ) andresti premiato ;-)
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  4. #4
    Scrivo solo che ho risolto...
    il template 'B' di unpack (pack fa l'inverso..) di perl si può simulare con:
    Codice PHP:
    $bitString decbin(ord($char));
    //oppure meglio ancora con
    $bitString sprintf('%08b'ord($char)); 
    per il template b invece basta invertire l'ordine dei bit (dal meno significativo al piu' significativo)


    Spero di esser stato di aiuto a qualcuno.
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  5. #5
    Utente di HTML.it L'avatar di bubi1
    Registrato dal
    Dec 2009
    Messaggi
    1,230
    Originariamente inviato da sanbiv
    Scrivo solo che ho risolto...
    il template 'B' di unpack (pack fa l'inverso..) di perl si può simulare con:
    Codice PHP:
    $bitString decbin(ord($char));
    //oppure meglio ancora con
    $bitString sprintf('%08b'ord($char)); 
    per il template b invece basta invertire l'ordine dei bit (dal meno significativo al piu' significativo)


    Spero di esser stato di aiuto a qualcuno.
    ord($char) va bene solo se hai ascii in input, su utf8 ad esempio no.

  6. #6
    Si certo...
    In realta' la funzione deve convertire una stringa che contiene solo una sequenza di caratteri gia' tradotti e traslitati in una sequenza esadecimale, ad esempio (non riporto l'esempio corretto, ma per farti capire) che so
    A = 41
    @ = 00
    € = C7E3 ...e cosi' via.....
    quindi mi ritrovo solo caratteri da 0 a F
    Comunque hai ragione...ovviamente non puo' esser utile a tutti l'esempio..ma il funzionamento del template B e b(dove i bit sono in ordine inverso) di unpack e pack di PERL (perché PHP non supporta questi due template) è come descritto sopra.
    MiServe di Santino Bivacqua
    PHP/Ruby/Node.js Developer
    www.miserve.com

  7. #7
    Comunque non mi chiamo Santino ma Santini (cognome)
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.