草庐IT

PHP 位掩码在应该为假时说真

我正在用按位AND比较两个变量,它不应该返回true但它确实返回了。这是我的代码,if($d&$w){returntrue;}else{returnfalse;}其中$d是15,$w是31。为什么位掩码不同时返回true? 最佳答案 您不是在比较这两个变量,而是在和它们。按位AND你无法比较任何东西。($d&$w)表示$dAND$w,其中AND是bool运算符。您在这里输入两个整数变量,它们也会给出一个整数。如果整数不为空,则在比较中将其解释为TRUE。$d是二进制01111$w是二进制11111($d&$w)显然是二进制01111

php - 如何按位比较字符串

我正在开发一个函数,它接受一系列少于255个字符的权限字符串并将它们分配给一个实体。分配的每个字符串都是唯一的,但是有太多的字符串,以至于将它们放入数组中,序列化它们并插入数据库,稍后将它们拉出并反序列化它们或在每次有负载时从查询中重新计算会导致延迟问题。尤其是继承权限。所以我在考虑获取字符串,从中生成一个掩码,然后将其放入权限glob中。随着更多权限的添加,继续将它们添加到glob中。然后,当您需要根据glob验证权限和字符串时。问题是如何生成掩码。起初我只是想对字符串进行哈希处理以获得一个独特的掩码,但这是可以想象的,但我不知道有多大可能,随着更多的哈希值被或运算到glob上,有可

php - 如何将数据插入位数据类型的字段?

我在尝试将新记录插入数据库时​​遇到问题。我认为问题出在位域上。当我分配值True时,出现此错误:Failed:Array([0]=>Array([0]=>22018[SQLSTATE]=>22018[1]=>245[code]=>245[2]=>[Microsoft][SQLServerNativeClient10.0][SQLServer]Conversionfailedwhenconvertingthevarcharvalue'1'todatatypebit.[message]=>[Microsoft][SQLServerNativeClient10.0][SQLServer]C

php - 在 32 位系统上将 64 位整数十六进制字符串转换为 64 位十进制字符串

将编码为十六进制字符串的64位整数转换为32位系统上的十进制字符串的简单方法是什么。它需要是完整的值,不能是科学计数法或截断:/"0c80000000000063"=="900719925474099299""0c80000000000063"!=9.007199254741E+17PHP的base_convert()和hexdec()没有正确完成工作。 最佳答案 您需要使用BCMathPHP扩展(捆绑)。首先将输入的字符串拆分为高字节和低字节,然后将其转换为十进制,然后通过BC函数进行计算,如下所示:$input="0C80000

php - 使用 PHP 和 ImageMagick 以编程方式将 RGB 图像转换为 1 位灰度 (b/w) 位图图像

我正在尝试使用PHP(版本:5.2.13)和ImageMagick(版本:6.7.8-7-Q16)以编程方式将位图RGB图像转换为1位灰度(b/w)位图图像。输入图像是位图,通过ImageMagick函数生成:boolImagick::setFormat(string$format)其中$format='bmp2'以下代码过去可以工作(旧版本的ImageMagick...不记得是哪一个),但在当前环境中不再工作:privatefunctionmonochrome(){if(isset($this->image)){try{//reduceimagecolorsto2(blackandw

用于 xlsx 的 phpexcel 千位分隔符

我正在使用\PHPExcel_Shared_String::setThousandsSeparator(',');为Excel文件定义千位分隔符。多亏了它,一个单元格显示为55452而不是55452。仍然,单元格值是一个整数55452,因此可以计算,在图表中使用等。是否有类似的方法来定义百万分隔符等等(例如,每3位定义一个分隔符)? 最佳答案 你需要像这样定义数字格式"#,#0.##;[Red]-#,#0.##"$workbook=newSpreadsheet_Excel_Writer('example.xls');$workshe

php - 将 32 位 TGA 转换为 PNG

我在thiscode工作并考虑到为32位“修复”它的注释,但它似乎仍然不起作用。我很确定它与TGAdescriptor有关.这将使用0-3位作为alphachannel深度,对于32位,它始终为8,并且代码没有考虑到这一点。我试图了解如何使用thisCcode将其拼凑在一起作为指南,但运气不好。一旦你考虑到像素长度为4(根据评论中的补丁),他的dwordize似乎只占4个字节中的3个,第4个字节是alpha我认为的位。我试着改变函数从functiondwordize($str){$a=ord($str[0]);$b=ord($str[1]);$c=ord($str[2]);return

php - 如何将 8 位二进制数据转换为十六进制

print_r(bin2hex("11111111"));echo'';print_r(bindec("11111111"));结果131313131313131255Iwantahexadecimal16bytevaluetodoaesencryption.Howistheconversionfrombinarytohexhappeninginphp.Iamgettingincorrectvalueusingthefunction.Alsowheniconvertanarrayofhexadecimalvaluestostringthebytelengthchanges

PHP 32 位。如何比较字符串和二进制表示形式的 uint64?

先决条件PHP5.3.632位(无法迁移到64位)。需要比较2个值uint64(8字节无符号整数)。其中一个是字符串,另一个是二进制字符串。问题是否可以将uint64的string表示形式转换为8字节的array,或者将array转换为在PHP32位上使用uint64将8个字节放入string?插图我试过了base_convert函数来比较base-2字符串表示并得到奇怪的结果。我知道字节数组包含与相应字符串相同的uint64。但我不知道如何确保它们代表相同的数字。这是带有一些实际值的测试代码来说明问题:functionbyte_to_base2string($byte){$byte=

php - 表格中的千位分隔符

我想在我的输入中添加千位分隔符,我该怎么做?我尝试在我的fields()方法中使用Laravel\Nova\Fields\Currency,但它没有帮助。它仍然在输入中显示值,例如:100000我想这样展示:100,000如何在LaravelNova中实现它?publicfunctionfields(Request$request){$fields=[];...$fields[]=Currency::make(__('Price'),'price');return$fields;} 最佳答案 使用number_format()doc