Heim >Backend-Entwicklung >PHP-Problem >So konvertieren Sie einen String in ein Byte-Array in PHP

So konvertieren Sie einen String in ein Byte-Array in PHP

PHPz
PHPzOriginal
2023-04-27 09:10:121064Durchsuche

In PHP werden Zeichenfolgen in Form von Zeichen verarbeitet und jedes Zeichen belegt eine unterschiedliche Anzahl von Bytes. Wenn wir eine Zeichenfolge in ein Byte-Array konvertieren müssen, dient dies normalerweise der Verwendung in Netzwerkkommunikation, Datenübertragung, Datenspeicherung und anderen Szenarien, da diese Szenarien die Verarbeitung von Daten in Form von Byte-Arrays erfordern.

Die Konvertierung zwischen Strings und Byte-Arrays in PHP erfordert die Hilfe einiger Funktionen. Im Folgenden stellen wir diese Funktionen und ihre Verwendung im Detail vor.

  1. strlen-Funktion

Die erste ist die strlen-Funktion, die verwendet wird, um die Länge einer Zeichenfolge zu ermitteln, also die Anzahl der Zeichen in der Zeichenfolge, zum Beispiel:

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

Im obigen Beispiel ist $str eine Zeichenfolge. Es besteht aus 5 Zeichen, seine Länge wird über die Funktion strlen ermittelt, das Ergebnis wird der Variablen $len zugewiesen und schließlich wird der Wert von $len ausgegeben.

  1. mb_strlen-Funktion

In PHP belegt jedes Zeichen standardmäßig ein Byte, aber bei komplexen Zeichensätzen wie Chinesisch kann die Darstellung eines Zeichens mehrere Bytes erfordern. In diesem Fall müssen Sie die Funktion mb_strlen verwenden, um das abzurufen tatsächliche Anzahl der Zeichen in der Zeichenfolge, zum Beispiel:

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

Im obigen Beispiel ist $str eine Zeichenfolge mit chinesischen Zeichen. Wenn Sie die Funktion strlen verwenden, um ihre Länge zu ermitteln, können Sie nur 11 erhalten. Wenn Sie mb_strlen verwenden Die Funktion muss den Zeichensatz utf-8 angeben, um die tatsächliche Anzahl der Zeichen in der Zeichenfolge korrekt zu erhalten.

  1. str_split-Funktion

Als nächstes kommt die str_split-Funktion, die zum Aufteilen einer Zeichenfolge in ein Array einzelner Zeichen verwendet wird, zum Beispiel:

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

Im obigen Beispiel ist $str eine Zeichenfolge und die str_split-Funktion ist es Wird verwendet, um die Zeichenfolge in ein Array aus einzelnen Zeichen aufzuteilen. Sie wird in ein Array mit einem einzelnen Zeichen aufgeteilt, das Ergebnis wird der Variablen $arr zugewiesen und schließlich wird der Inhalt von $arr mit der Funktion print_r ausgegeben.

  1. unpack-Funktion

unpack-Funktion ist eine Funktion, die Binärzeichenfolgen in Arrays umwandelt. Ihre Syntax lautet wie folgt:

array unpack ( string $format , string $data )

wobei der Parameter $format verwendet wird, um das Format der Daten anzugeben, und der Parameter $data die zu konvertierende Binärzeichenfolge. Der Parameter $format ist eine Zeichenfolge, die aus einem oder mehreren Formatcodes besteht. Jeder Formatcode wird verwendet, um einen Datentyp und die entsprechende Anzahl von Bytes zu beschreiben. Häufig verwendete Formatcodes und ihre entsprechenden Datentypen sind wie folgt:

  • c – vorzeichenbehaftetes Zeichen
  • C – vorzeichenloses Zeichen
  • s – vorzeichenbehaftete kurze Ganzzahl
  • S – vorzeichenlose kurze Ganzzahl
  • n – vorzeichenlose kurze Ganzzahl, Netzwerkbyte Reihenfolge
  • i – Ganzzahl mit Vorzeichen
  • I – Ganzzahl ohne Vorzeichen
  • l – Long mit Vorzeichen
  • L – Long ohne Vorzeichen
  • N – Long ohne Vorzeichen, Netzwerk-Byte-Reihenfolge

Zum Beispiel, wenn wir eine binäre Zeichenfolge konvertieren müssen, die enthält Ganzzahlige Daten in ein Array umwandeln, können wir den folgenden Code verwenden:

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

Im obigen Beispiel ist $data eine binäre Zeichenfolge, die einzelne ganzzahlige Daten enthält. Die Entpackfunktion konvertiert sie in ein Array mit einem Element und weist das Ergebnis zu die Variable $arr und verwendet schließlich die Funktion print_r, um den Inhalt von $arr zu drucken.

  1. Pack-Funktion

Im Gegensatz zur Entpack-Funktion wird die Pack-Funktion zum Packen von Arrays in Binärzeichenfolgen verwendet. Ihre Syntax lautet wie folgt:

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

wobei $format den gleichen Formatcode wie die Entpack-Funktion hat und verwendet wird Um das gepackte Datenformat anzugeben, sind $args1, $args2 und andere Parameter die zu packenden Daten, bei denen es sich um einen oder mehrere handeln kann.

Wenn wir beispielsweise ein Array in eine Binärzeichenfolge packen müssen, können wir den folgenden Code verwenden:

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

Im obigen Beispiel ist $arr ein Array mit ganzzahligen Daten, die in eine Binärzeichenfolge gepackt werden. und weisen Sie das Ergebnis der Variablen $data zu. Verwenden Sie abschließend die Funktion bin2hex, um $data in eine hexadezimale Zeichenfolge umzuwandeln und auszugeben.

Zusammenfassend lässt sich sagen, dass es in PHP viele Möglichkeiten gibt, Zeichenfolgen in Byte-Arrays zu konvertieren, und Sie können die geeignete Methode entsprechend dem jeweiligen Anwendungsszenario auswählen. Unabhängig davon, welche Methode verwendet wird, müssen Sie auf Aspekte wie Zeichenkodierung und Datenformat achten, um korrekte Ergebnisse zu erhalten.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie einen String in ein Byte-Array in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn