Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengenai pemprosesan rentetan heksadesimal dalam PHP7

Mengenai pemprosesan rentetan heksadesimal dalam PHP7

藏色散人
藏色散人ke hadapan
2021-11-19 17:07:211857semak imbas

Artikel ini adalah daripada ruangan tutorial PHP7 untuk memperkenalkan kepada anda masalah "0xFFFFFFFF" dan 0xFFFFFFFF dalam php7. Ia mempunyai nilai rujukan tertentu Rakan-rakan yang memerlukan boleh merujuk kepadanya.

Soalan khusus:

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

Nilai kod di atas dalam php7 (eksklusif) dan platform berikut ialah:

int(364129809)
int(364129809)

Dan dalam php7 Nilainya ialah:

int(364129809)
int(0)

Maaf, dalam persekitaran php7, bagaimana saya harus mengendalikan 0x.$str untuk menjadikannya sama dengan nilai di atas?

Penyelesaian:

Bermula dari PHP7, rentetan perenambelasan tidak lagi dianggap nombor

Jika anda perlu menyemak sama ada rentetan itu Mengandungi nombor perenambelasan, Kod yang disyorkan secara rasmi ialah

<?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)
?>

Untuk menangani masalah di atas, ia harus ditukar kepada

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

Atas ialah kandungan terperinci Mengenai pemprosesan rentetan heksadesimal dalam PHP7. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam