2017-11-13 4 views
0

Ich bin mit PHP 7.1.11Warum werden die Ganzzahldatentypen hexadezimal, oktal und binär in dezimalen Typ konvertiert und dann in einem Browser angezeigt?

ich folgende PHP-Code haben:

<?php 
$a = 0123; // an octal number (equivalent to 83 decimal) 
$b = 0x1A; // a hexadecimal number (equivalent to 26 decimal) 
$c = 0b11111111; // a binary number (equivalent to 255 decimal) 

var_dump($a); //Output : int(83) int(26) int(255) 
var_dump($b); //Output : int(26) int(255) 
var_dump($c); //Output : int(255) 
?> 

Meine Frage ist, warum die in Integer-Datentypen von Oktal, Hexadezimal und Binär-Daten enthalten immer umgewandelt werden in Dezimal und dann im Browser zusammen mit dem neuen Datentyp Integer angezeigt?

Warum werden die ursprünglichen Werte der Variablen nicht angezeigt und auch nicht der ursprüngliche Datentyp?

Warum gibt es einen Umwandlungsschritt und wer macht das aus welchem ​​Grund?

Wenn wir andere Datentypen Leben Boolean, Float, String nichts dergleichen passieren. Alles funktioniert wie erwartet, warum passiert dieses komische Ding mit diesen ganzzahligen Datentypen?

+1

Sogar eine Oktalzahl ist eine Ganzzahl, Binärzahlen sind Ganzzahlen usw. ... Es gibt keinen Subtyp - Oktalzahl. Es werden nur die von Ihnen erstellten Werte angezeigt. –

+0

@NigelRen: Oktal, binär und hexadezimal sind alle Ganzzahlen, die ich kenne, aber warum werden sie in dezimale Ganzzahlen umgewandelt und verlieren ihren ursprünglichen Kontext von oktal, hexadezimal und binär? Das ist meine Frage. – user2839497

+0

Ich habe meinen Kommentar aktualisiert, um zu sagen - es gibt keine Untertypen für Ganzzahlen, sie sind alle intern in Binärform dargestellt. Sie werden nur in Dezimal angezeigt, da dies die meisten Leute wollen. –

Antwort

1

Es gibt nur eine Art von (ganzzahliger) Zahl, und das Format der Zahl ist völlig unwichtig. Die Werte 052, und 0x2A entsprechen genau dem gleichen Wert. PHP erinnert sich nicht daran, wie eine Nummer erstellt wurde. Es speichert diese Informationen nicht, da es nutzlose Informationen sind, die nur Speicherplatz verschwenden würden. Binäre, oktale und hexadezimale Notationen sind einfache Annehmlichkeitsangebote, um es Ihnen zu ermöglichen, Zahlen in der am besten geeigneten Schreibweise für den Kontext auszudrücken; Es wird alles zu einem int mit dem gleichen Wert geparst und dann standardmäßig in Dezimalschreibweise ausgegeben.

Verwandte Themen