Heim  >  Artikel  >  Backend-Entwicklung  >  Bezüglich der Verarbeitung von Hexadezimalzeichenfolgen in PHP7

Bezüglich der Verarbeitung von Hexadezimalzeichenfolgen in PHP7

藏色散人
藏色散人nach vorne
2021-11-19 17:07:211839Durchsuche

Dieser Artikel wurde von der PHP7Tutorial-Kolumne geschrieben, um Ihnen die Probleme von „0xFFFFFFFF“ und 0xFFFFFFFF in PHP7 vorzustellen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird für alle hilfreich sein.

Spezifische Frage:

$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11));
$t2 = 0x3FFFFFFF & (1 * ("0xd5b42e11"));
var_dump($t1,$t2);

Der Wert des obigen Codes in PHP7 (nicht enthalten) und den folgenden Plattformen ist:

int(364129809)
int(364129809)

Und der Wert in PHP7 ist:

int(364129809)
int(0)

Wie soll 0x in der PHP7-Umgebung gehandhabt werden? . Wie wäre es, wenn $str dem oben genannten Wert entspricht?

Lösung:

Ab PHP7 gelten Zeichenfolgen mit Hexadezimalziffern nicht mehr als Zahlen

Wenn Sie erkennen müssen, ob eine Zeichenfolge Hexadezimalziffern enthält, lautet der offiziell empfohlene Code

<?php
$str = "0xffff";
$int = filter_var($str, FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX);
if (false === $int) {
    throw new Exception("Invalid integer!");
}
var_dump($int); // int(65535)
?>

für Die obige Frage sollte geändert werden zu

$t1 = 0x3FFFFFFF & (1 * (0xd5b42e11));
$t2 = 0x3FFFFFFF & (1 * (filter_var("0xd5b42e11", FILTER_VALIDATE_INT, FILTER_FLAG_ALLOW_HEX)));
var_dump($t1,$t2);

Das obige ist der detaillierte Inhalt vonBezüglich der Verarbeitung von Hexadezimalzeichenfolgen in PHP7. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:segmentfault.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen