有人能解释一下这个功能是如何运作的吗?
$size=100 //kb
if (filesize(file) > ($size << 10))
echo "file too big";
$size << 10
如何运作?如何让它使用MB而不是KB?
答案 0 :(得分:5)
表达式$size << 10
将位模式向左移动10次,实际上乘以1024;换句话说,它是$size * 1024
。
每次执行左移时,都会将该值乘以系数2。另请参阅bitwise operators。
如果您希望$size
表示以MB为单位的大小,则再乘以1024,即
if ($filesize($file) > $size * 1024 * 1024) {
echo "file too big";
}
或者:
if ($filesize($file) > $size << 20) {
echo "file too big";
}
答案 1 :(得分:2)
数字在内部表示为二进制,一系列零和一。 <<
运算符将移动指定数量的位置所剩下的所有二进制数字,在右侧它会附加零,例如:
7 << 2
= 111 << 2 (7 = 111 in base two)
= 11100
= 28 (11100 = 28 in base ten)
接下来您需要知道1024 = 2
10
因此具有10
位二进制表示,因此向左移10位数会产生数字乘以1024
。
答案 2 :(得分:1)
$size << 10
表示$size * pow(2, 10)
。 2
的第十个幂是1024
,它是以千字节为单位的字节数。兆字节中的字节数为pow(2, 20)
;你可以把它写成$size << 20
。
答案 3 :(得分:0)
filesize函数以 bytes 返回文件的大小。 $size
值定义为 KB 。 ($size << 10)
从KB转换为字节,以便比较正确。
答案 4 :(得分:0)
这是一个左移操作员。
100 << 10
表示将100向左移动10.这会给你102400
与乘以1024相同。
它将100kb转换为字节,这是filesize()
返回的内容。