PHP中二进制的前缀是什么?

36

它既不是 0x 也不是 0; 它是什么?是否存在?


2
0b 开头表示二进制数字,例如 0b1010101(需要至少 PHP 5.4 版本)。 - Pacerier
4个回答

54
从PHP 5.4+开始,二进制数的前缀是:
0b

对于早期版本,没有这样的前缀。相反,您可以使用`0x`来表示十六进制。
有关更多信息,请参阅PHP手册中的整数部分
然而,如果您确实需要在PHP 5.4之前使用二进制编写值,您可以使用bindec函数,该函数接受一个包含二进制的字符串,并返回相应的值。
例如,以下代码片段:
echo bindec('10011');

会给你带来以下内容:
19

但请注意不要经常这样做:每次执行脚本时调用一个函数来执行这个操作对性能来说是相当糟糕的 ^^
相反,更好的解决方案是使用十六进制编写您的值,其中每个数字代表4位。

很遗憾听到这个消息...但是你是第一个提供替代方案的人 :) - user198729
Brad Koch描述了PHP 5.4中存在一个前缀。 - Juan Jo

49

PHP 5.4中新增了二进制前缀0b。但在使用时需要考虑可移植性,必须确保服务器运行的是PHP 5.4及以上版本。


被接受的答案可能在问题发生时是正确的,但目前这个才是正确的答案,这只是一个支持Brads答案的链接: http://php.net/manual/en/language.types.integer.php - Juan Jo

2
从PHP 5.4+开始,实际上有一个前缀:0b
来自PHP文档的当前信息:

自PHP 5.4.0以来,二进制整数文字可用。

要使用八进制表示法,请在数字之前加上0(零)。要使用十六进制表示法,请在数字之前加上0x。要使用二进制表示法,请在数字之前加上0b。


Mar 24 '10 at 11:31(原始答案): 我不认为有这样一个前缀。前缀0是八进制的,而0x是十六进制的。
来自PHP文档的引用:

整数可以用十进制(基数10)、十六进制(基数16)或八进制(基数8)表示,可选地在符号(-或+)之前加上一个符号。

要使用八进制表示法,请在数字之前加上0(零)。要使用十六进制表示法,请在数字之前加上0x。


1

请查看手册:PHP仅支持十进制、十六进制和八进制整数表示法,但您可以使用bindec()代替。

此外,请记住每个十六进制数字代表4位,因此在二进制表示法和十六进制之间进行转换很容易。对于八进制也是如此,但由于各种原因,在实践中使用较少。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接