Maison  >  Article  >  développement back-end  >  Comment convertir une chaîne en tableau d'octets en php

Comment convertir une chaîne en tableau d'octets en php

PHPz
PHPzoriginal
2023-04-27 09:10:12966parcourir

En PHP, les chaînes sont traitées sous forme de caractères, et chaque caractère occupe un nombre d'octets différent. Lorsque nous devons convertir une chaîne en tableau d'octets, elle est généralement utilisée dans la communication réseau, la transmission de données, le stockage de données et d'autres scénarios, car ces scénarios nécessitent que les données soient traitées sous forme de tableaux d'octets.

La conversion entre chaînes et tableaux d'octets en PHP nécessite l'aide de certaines fonctions. Ci-dessous, nous présenterons ces fonctions et leur utilisation en détail.

  1. Fonction strlen

La première est la fonction strlen, qui est utilisée pour obtenir la longueur d'une chaîne, qui est le nombre de caractères dans la chaîne, par exemple :

$str = "hello";
$len = strlen($str);
echo $len; // 输出 5

Dans l'exemple ci-dessus, $str est une chaîne, elle se compose de 5 caractères, sa longueur est obtenue via la fonction strlen et le résultat est affecté à la variable $len, et enfin la valeur de $len est affichée.

  1. Fonction mb_strlen

En PHP, par défaut, chaque caractère occupe un octet, mais pour les jeux de caractères complexes tels que le chinois, un caractère peut nécessiter plusieurs octets pour être représenté, auquel cas vous devez utiliser la fonction mb_strlen pour obtenir le nombre réel de caractères dans la chaîne, par exemple :

$str = "你好,世界!";
$len = mb_strlen($str, "utf-8");
echo $len; // 输出 7

Dans l'exemple ci-dessus, $str est une chaîne contenant des caractères chinois. Si vous utilisez la fonction strlen pour obtenir sa longueur, vous ne pouvez obtenir que 11. Si vous utilisez mb_strlen. La fonction doit spécifier le jeu de caractères comme utf-8 afin d'obtenir correctement le nombre réel de caractères dans la chaîne.

  1. Fonction str_split

Vient ensuite la fonction str_split, qui est utilisée pour diviser une chaîne en un tableau de caractères uniques, par exemple :

$str = "hello";
$arr = str_split($str);
print_r($arr); // 输出 Array ( [0] => h [1] => e [2] => l [3] => l [4] => o )

Dans l'exemple ci-dessus, $str est une chaîne qui est divisée par le Fonction str_split Il est divisé en un tableau contenant un seul caractère, et le résultat est affecté à la variable $arr, et enfin le contenu de $arr est affiché à l'aide de la fonction print_r.

  1. fonction unpack

La fonction unpack est une fonction qui convertit une chaîne binaire en tableau. Sa syntaxe est la suivante :

array unpack ( string $format , string $data )

Le paramètre $format est utilisé pour spécifier le format des données, et le $data. Le paramètre est la chaîne binaire à convertir. Le paramètre $format est une chaîne composée d'un ou plusieurs codes de format. Chaque code de format est utilisé pour décrire un type de données et son nombre d'octets correspondant. Les codes de format couramment utilisés et leurs types de données correspondants sont les suivants :

  • c - caractère signé
  • C - caractère non signé
  • s - entier court signé
  • S - entier court non signé
  • n - entier court non signé, octet réseau order
  • i - Entier signé
  • I - Entier non signé
  • l - Long signé
  • L - Long non signé
  • N - Long non signé, ordre des octets réseau

Par exemple, si nous devons convertir une chaîne binaire contenant données entières dans un tableau, nous pouvons utiliser le code suivant :

$data = "\x00\x12\x34\x56"; // 十六进制字符串
$arr = unpack("N", $data);
print_r($arr); // 输出 Array ( [1] => 305419896 )

Dans l'exemple ci-dessus, $data est une chaîne binaire contenant une seule donnée entière, via La fonction unpack la convertit en un tableau contenant un élément, attribue le résultat à la variable $arr, et utilise enfin la fonction print_r pour imprimer le contenu de $arr.

  1. fonction pack

Contrairement à la fonction unpack, la fonction pack est utilisée pour regrouper des tableaux en chaînes binaires. Sa syntaxe est la suivante :

string pack ( string $format , mixed $args1 [, mixed $args2 [, mixed $... ]] )

où $format a le même code de format que la fonction unpack et est utilisé. pour spécifier le format de données empaqueté, $args1, $args2 et d'autres paramètres sont les données à empaqueter, qui peuvent être un ou plusieurs.

Par exemple, si nous devons regrouper un tableau dans une chaîne binaire, nous pouvons utiliser le code suivant :

$arr = array(305419896);
$data = pack("N", ...$arr);
echo bin2hex($data); // 输出 00123456

Dans l'exemple ci-dessus, $arr est un tableau contenant une donnée entière, qui est emballée dans une chaîne binaire, et attribuez le résultat à la variable $data. Enfin, utilisez la fonction bin2hex pour convertir $data en chaîne hexadécimale et affichez-la.

Pour résumer, il existe de nombreuses façons de convertir des chaînes en tableaux d'octets en PHP, et vous pouvez choisir la méthode appropriée en fonction du scénario d'application spécifique. Quelle que soit la méthode utilisée, vous devez prêter attention à des problèmes tels que le codage des caractères et le format des données pour obtenir des résultats corrects.

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