2010-07-22 4 views

Répondre

10

La fonction chr() convertit un octet en son équivalent ASCII et la fonction intval() obtient la valeur entière d'une variable.

Si nous devions briser la déclaration en deux lignes différentes, ce serait:

$a = chr(255); // $a is now a string 
echo intval($a); 

Si vous consultez la documentation de intval() vous remarquerez que:

Strings recommencera très probablement 0 bien que cela dépend des caractères les plus à gauche de la chaîne. Les règles communes de la coulée d'entier s'appliquent.

C'est pourquoi le résultat est nul.

7

L'octet 0xFF ne représente pas un chiffre soit octal, décimal ou hexadécimal ce que intval on cherche. Vous avez probablement voulu le ord function.

1

Pour la sortie 255, vous avez besoin:

echo intval(ord(chr(255))); 

Il y a 128 nombres ordinaux en ASCII, la 255 sort pour être ÿ donc quand vous le convertir en un certain nombre avec intval, il sera 0.

0

Parce que chr fournit une chaîne, dans ce cas avec un seul caractère, le caractère 0xFF, ou mieux connu sous le nom ÿ. D'autre part fait une conversion d'une chaîne en un entier basé sur le contenu de la chaîne, et non les caractères.

echo intval("33");  // will print 33 
    echo intval("10", 8);  // will print 8 
    echo intval("0xFF", 16); // will print 255 

    echo intval("m"); // will print zero... 
        //you can't convert letters like that to numbers. 
0
chr(255) 

retourne un caractère correspondant à ASCI 255

et intval essayer de faire une partie entière d'une variable

depuis chr (255) retourne un caractère non numérique de sorte intval get pas de valeur int et retour 0

+2

Il y a seulement 128 caractères en US-ASCII. – Gumbo

Questions connexes