我正在将PHP应用程序与使用0x00000008
,0x20000000
等形式的权限的API集成,其中每个权限都代表给定的权限。他们的API返回一个整数。在PHP中,如何将0x20000000
之类的内容解释为整数,以便我可以使用按位运算符?
另一个开发者告诉我他认为这些数字是十六进制注释,但谷歌搜索,我发现有限的结果。 这些是什么类型的数字以及如何获取integer
权限集并使用按位运算符来确定用户是否可以0x00000008
。
答案 0 :(得分:3)
正如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
函数在使用前进行转换。
答案 1 :(得分:2)
由于您是从API接收它,因此php会将其解释为字符串
echo hexdec('0x00000008');
返回整数 8
这应该有用。