Maison >développement back-end >tutoriel php >Comment puis-je convertir une chaîne PHP en un tableau d'octets ?

Comment puis-je convertir une chaîne PHP en un tableau d'octets ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-27 18:39:11226parcourir

How Can I Convert a PHP String to a Byte Array?

Conversion d'une chaîne en tableau d'octets en PHP

En PHP, il existe différentes manières de convertir une chaîne contenant des caractères et des nombres en un tableau d'octets. Semblable à la méthode getBytes() de Java, voici quelques approches pour réaliser cette conversion :

Utilisation de la fonction ord()

Parcourez chaque caractère de la chaîne en utilisant strlen(). Pour chaque caractère, utilisez la fonction ord() pour obtenir sa valeur entière ASCII. Stockez ces valeurs dans un tableau ou un tableau d'octets.

for ($i = 0; $i < strlen($msg); $i++) {
    $data[] = ord($msg[$i]); // Store in an array
    // or
    $byte_array .= ord($msg[$i]); // Concatenate in a byte array
}

Utilisation de la fonction unpack()

La fonction unpack() de PHP offre une méthode concise pour convertir une chaîne dans un tableau structuré de valeurs entières. Il vous permet d'extraire et de réinterpréter les caractères de la chaîne sous forme d'octets individuels.

$byte_array = unpack('C*', 'The quick fox jumped over the lazy brown dog');
var_dump($byte_array);

Notez que les valeurs du tableau $byte_array sont des entiers représentant les codes ASCII de chaque caractère, allant de 0 à 255.

Compte tenu de l'extrait de code d'origine fourni, il semble que vous tentiez de convertir les caractères en valeurs hexadécimales plutôt qu'en entiers. valeurs. Pour y parvenir, vous pouvez utiliser la fonction bin2hex() après avoir obtenu le code ASCII du personnage :

for ($i = 0; $i < strlen($msg); $i++) {
    $data .= bin2hex(chr(ord($msg[$i]))); // Convert to hex and concatenate
}

Notes supplémentaires

  • La fonction unpack() crée un tableau d'index de base 1, où le premier élément est accessible avec $byte_array[1].
  • Le tableau d'octets de sortie peut être facilement converti en byte[] en C#, car les valeurs sont comprises entre 0 et 255.
  • Assurez-vous que le serveur de destination en Java attend un tableau d'octets, pas une chaîne.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn