intval() with negative base prefixed string does not detect base
Personne n'a encore pris cette issue.
- Langage dominant
- C
- Étoiles
- 40.4k
- Forks
- 8.2k
- Merge moyen
- 2 j 13 h
- PR mergées (30 j)
- 96
Description
Description
The following code:
<?php
$s = "-0b11111111111111111111111111111111111111111111111111111111111111111111111111111";
$v1 = intval($s, 2);
var_dump($v1);
$v2 = intval($s);
var_dump($v2);
var_dump((int) $s);
Resulted in this output:
int(-9223372036854775808)
int(0)
int(0)
But I expected this output instead:
int(-9223372036854775808)
int(-9223372036854775808)
int(0)
Similarly, if we use $base = 16
Note the 0o prefix is not supported (which is what initially led me down this rabbit hole).
PHP Version
PHP 8.3
Operating System
No response
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par reproduire l’exemple PHP 8.3 avec intval() sur la chaîne négative préfixée par 0b et comparez la base 2 explicite, la détection implicite de la base et la conversion en entier. Le travail est terminé lorsqu’il a été décidé et vérifié si la détection implicite de la base doit produire le même entier négatif saturé que le cas de base explicite, tout en conservant l’absence documentée de prise en charge de 0o.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- php
- Domaine
- backend
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 45/100