2009-05-08 21 views

Respuesta

4

creo que está pidiendo el equivalente al paquete Perl/funciones de desempaquetado. Si ese es el caso, le sugiero que busque en el paquete PHP/funciones de desempaquetado:

+0

Esto es exactamente lo que estaba buscando. –

1

No existe una matriz binaria en PHP. Todas las funciones que requieren flujos de bytes operan en cadenas. ¿Qué es exactamente lo que quieres hacer?

1

Si intenta acceder a una parte específica de una cadena, puede tratarla como una matriz como está.

$foo = 'bar'; 
echo $foo[0]; 

de salida: b

+2

Para este tipo de acceso cadena, creo que la notación de corchete es preferible (de lo contrario se corre el riesgo de confundir el infierno fuera de cualquier cosa mantener su código). Por ejemplo: $ foo {0} – EvanK

+1

A menos que esté equivocado, la notación de llaves para esto está obsoleta en PHP 6 – McAden

+1

Ah, aquí está: http://us.php.net/language.types.string The "Nota" bajo el encabezado - "Acceso a cadenas y modificación por carácter" – McAden

1

Digamos que desea convertir $ stringa = "Hola" a binario .

Primero tome el primer carácter con la función ord(). Esto le dará el valor ASCII del carácter que es decimal. En este caso es 72.

Ahora conviértalo en binario con la función dec2bin(). Luego tome la siguiente función. Puede encontrar cómo funcionan estas funciones en http://www.php.net.

O utilizar este trozo de código:

<?php 
    // Call the function like this: asc2bin("text to convert"); 
    function asc2bin($string) 
    { 
     $result = ''; 
     $len = strlen($string); 
     for ($i = 0; $i < $len; $i++) 
     { 
      $result .= sprintf("%08b", ord($string{$i})); 
     } 
     return $result; 
    } 

    // If you want to test it remove the comments 
    //$test=asc2bin("Hello world"); 
    //echo "Hello world ascii2bin conversion =".$test."<br/>"; 
    //call the function like this: bin2ascii($variableWhoHoldsTheBinary) 
    function bin2ascii($bin) 
    { 
     $result = ''; 
     $len = strlen($bin); 
     for ($i = 0; $i < $len; $i += 8) 
     { 
      $result .= chr(bindec(substr($bin, $i, 8))); 
     } 
     return $result; 
    } 
    // If you want to test it remove the comments 
    //$backAgain=bin2ascii($test); 
    //echo "Back again with bin2ascii() =".$backAgain; 
?>