为什么整数数据类型的十六进制、八进制和二进制会被转换为十进制类型,然后在浏览器中显示?

5 浏览
0 Comments

为什么整数数据类型的十六进制、八进制和二进制会被转换为十进制类型,然后在浏览器中显示?

我使用的是PHP 7.1.11

我有以下的PHP代码:


我的问题是为什么八进制、十六进制和二进制整数类型的数据会被转换为十进制,然后与新的数据类型integer一起显示在浏览器中?

为什么它不显示变量的原始值,也不显示它们的原始数据类型?

为什么会有一个转换步骤,由谁来执行以及出于什么原因?

如果我们考虑其他数据类型,比如布尔值、浮点数、字符串,都不会发生这样的情况。一切都按照预期工作,那为什么这个奇怪的事情会发生在这些整数数据类型上?

0
0 Comments

整理出的内容如下:

问题的出现的原因是,整数数据类型的十六进制、八进制和二进制被转换为十进制类型,然后在浏览器中显示,这是因为PHP只记住数字的值,而不关心数字的格式。PHP不会存储创建数字的方式,因为这些信息对于程序来说是无用的,只会浪费存储空间。二进制、八进制和十六进制表示法只是方便的表示方式,让你可以在最合适的上下文中表达数字;实际上,它们都被解析为相同值的整数,然后默认以十进制表示输出。

解决方法是,如果想要在浏览器中显示其他进制的整数,可以使用相应的函数将其转换为字符串,然后输出。例如,使用bin2hex()函数将二进制转换为十六进制,使用decoct()函数将十进制转换为八进制,使用decbin()函数将十进制转换为二进制。这样就可以在浏览器中显示不同进制的整数值了。

下面是一个示例代码,演示如何将十进制整数转换为其他进制的字符串并在浏览器中显示:


这段代码将十进制数42转换为十六进制、八进制和二进制的字符串,并在浏览器中显示出来。通过使用相应的转换函数,我们可以将整数以不同的进制显示在浏览器中。

0