我正在尝试将这段在循环中使用按位运算符的代码从JavaScript翻译成PHP。这是JavaScript代码:for(vark=0,iTop=str.length;k>8)^("0x"+table.substr(((crc^str.charCodeAt(k))&0x000000FF)*9,8));document.write(crc);}这是翻译成PHP的相同代码for($k=0,$iTop=strlen($str);$k>8)^("0x".substr($table,(($crc^ord($str[$k]))&0x000000FF)*9,8));echo$crc;}这两个段为crc变
我将省略我是如何做到这一点的细节,但重点是下面的代码在PHP5.2x86和PHP5.3x86上产生不同的结果。结果是:Linuxx64,PHP5.3Platform:LinuxTest13.2.0-25-generic#40-UbuntuSMPWedMay2320:30:51UTC2012x86_64PHPversion:5.3.10-1ubuntu3.2Maxinteger:9223372036854775807Result:-1511693242Linuxx86,PHP5.3Platform:LinuxTest22.6.32-5-686#1SMPSunMay604:01:19UTC
//你好,我想用按位运算排除一个标志,但我不知道如何://这是标志(它们来自文件系统迭代器)define('CURRENT_AS_FILEINFO',0);define('CURRENT_AS_SELF',16);define('CURRENT_AS_PATHNAME',32);define('CURRENT_MODE_MASK',240);define('KEY_AS_PATHNAME',0);define('KEY_AS_FILENAME',256);define('FOLLOW_SYMLINKS',512);define('KEY_MODE_MASK',3840);define(
有时在编程中,它们允许将参数链接到单个函数输入变量中,例如下面的第二个输入变量:define('FLAGA',40);define('FLAGB',10);define('FLAGC',3);functionfoo($sFile,$vFlags){//dosomething}foo('test.txt',FLAGA|FLAGB|FLAGC);PHP将这个单竖线字符(|)称为按位OR运算符。我现在如何在foo()中添加一些东西来测试$vFlags以查看设置了哪些标志? 最佳答案 我想你会发现像这样的标志通常被定义为2的幂,例如:def
谁能解释一下这个函数是如何工作的?$size=100//kbif(filesize(file)>($size如何$size工作?如何让它使用MB而不是KB? 最佳答案 表达式$size将位模式向左移动10次,有效乘以1024;换句话说,它是$size*1024.每次执行左移时,都会将值乘以二。另见bitwiseoperators.如果你想要$size要以MB为单位表示大小,请再乘以1024,即if($filesize($file)>$size*1024*1024){echo"filetoobig";}或者:if($filesize(
我有以下问题:首先:我正在尝试对一个大数进行32个空格的按位左移,但出于某种原因,该数总是按原样返回。例如:echo(516103988因为将位向左移动一个空格相当于乘以2,所以我尝试将数字乘以2^32,结果成功了,它返回2216649749795176448。其次:我必须将9379添加到上述点的数字中:printf('%0.0f',2216649749795176448+9379);//prints2216649749795185920应该打印:2216649749795185827 最佳答案 执行32位移位操作可能不会像您预期的
操作1539|0xfffff800在JavaScript和Python2.7中返回-509。在PHP中,我得到4294966787。有谁知道为什么并可以向我解释一下。我也很想知道如何在PHP中获得预期的结果。 最佳答案 1539|0xfffff800=4294966787(=0xFFFFFE03)这是完全正确的。所以,PHP是对的。如果您希望同时拥有正整数和负整数,则需要某种机制来确定数字是否为负数。这通常使用数字的2补码来完成。您可以通过反转数字的所有位然后将其加1来取反数字。为了避免歧义,您不能使用整型变量的所有位。在这种情况下
我是PHP的新面孔。我读到dechex(255)会在PHP中给出相应的十六进制值ff。我需要-105的十六进制值。我尝试了dechex(-105)并得到了ffffff97的结果。但我只想让97做一些事情。在Java中,我知道对0xff的一些明智操作给了我们结果97即(byte)-105&(byte)0xff=0x97。请像我在Java中那样在PHP中找到解决方案。 最佳答案 你可以在php中这样做:var_dump(dechex(-105&255))使其脱离最后一个字节(下面的示例输出)string(2)"97"
我正在开发一个函数,它接受一系列少于255个字符的权限字符串并将它们分配给一个实体。分配的每个字符串都是唯一的,但是有太多的字符串,以至于将它们放入数组中,序列化它们并插入数据库,稍后将它们拉出并反序列化它们或在每次有负载时从查询中重新计算会导致延迟问题。尤其是继承权限。所以我在考虑获取字符串,从中生成一个掩码,然后将其放入权限glob中。随着更多权限的添加,继续将它们添加到glob中。然后,当您需要根据glob验证权限和字符串时。问题是如何生成掩码。起初我只是想对字符串进行哈希处理以获得一个独特的掩码,但这是可以想象的,但我不知道有多大可能,随着更多的哈希值被或运算到glob上,有可
我有以下代码:print"\n1&11\n";var_dump(1&11);print"\n2&222\n";var_dump(2&222);为什么第一个结果是1?为什么第二个结果是2?PHPWebsite说2&222(例如)应该返回一个bool值:Forexample,$a&$b==trueevaluatestheequivalencythenthebitwiseand;while($a&$b)==trueevaluatesthebitwiseandthentheequivalency."我不明白,2&222怎么会是2呢? 最佳答案