我正在将一个PHP应用程序与一个使用权限形式为0x00000008
,0x20000000
等的API集成在一起,其中每个代表一个给定的权限。他们的API返回一个整数。在PHP中,我如何将类似0x20000000
的内容解释为整数,以便我可以使用按位运算符?PHP十六进制到整数
另一个开发者告诉我他认为这些数字是十六进制注释,但是在PHP中使用谷歌搜索我发现有限的结果。 这些数字是什么类型,以及如何获取integer
权限集,并使用按位运算符确定用户是否可以0x00000008
。
我正在将一个PHP应用程序与一个使用权限形式为0x00000008
,0x20000000
等的API集成在一起,其中每个代表一个给定的权限。他们的API返回一个整数。在PHP中,我如何将类似0x20000000
的内容解释为整数,以便我可以使用按位运算符?PHP十六进制到整数
另一个开发者告诉我他认为这些数字是十六进制注释,但是在PHP中使用谷歌搜索我发现有限的结果。 这些数字是什么类型,以及如何获取integer
权限集,并使用按位运算符确定用户是否可以0x00000008
。
正如php文档中所述,很像C语言中发生的情况,这种格式在PHP中被认为是一个本地整数(以十六进制表示法)。
<?php
echo 0xDEADBEEF; // outputs 3735928559
参考:http://php.net/manual/en/language.types.integer.php#language.types.integer.syntax
这样,就可以对他们,因为他们是纯整数寄存器的大小进行任何位运算,对于您的服务器的处理器(现在您可能正在使用64位体系结构,只是在适用的情况下,您可以通过phpinfo()
以及其他方式进行确认)。
echo 0x00000001<<3; // 1*2*2*2, outputs 8
参考:http://php.net/manual/en/language.operators.bitwise.php
如建议通过在各自的答案和注释@iainn和@SaltyPotato,因为你是从API读取数据你可能不得不处理作为字符串而不是本地整数获得的这些值。为了克服这个问题,你只需要通过hexdec
函数在使用前转换它们。
因为你是从API PHP接受它会将其解释为一个字符串
echo hexdec('0x00000008');
返回整数
这应该工作。
作品走出box.https的://3v4l.org/g1ggf http://php.net/manual/en/language.types.integer.php#language.types .integer.syntax – Calimero
对于整数变量**,PHP本身支持'0x ...'表示法,但是如果您有从API获得的字符串,则需要通过' hexdec()' – iainn
你们其中一人可以发布这些答案吗? – Webnet