我见过一些在mt_rand(0, 0xffff)
中使用 0xffff 的PHP脚本。我做echo 0xffff;
,结果为 65535 。使用 0xffff 有什么意义吗?那是什么?
答案 0 :(得分:25)
十六进制表示法0xffff
清楚地表明数字中的所有位都是1
。 65535
是相同的数字,但二进制表示不是那么明显。这只是一个计数。所以这种编写数字的方式有不同的语义。
例如,如果要声明某个变量的最大值必须为65535,那么最好这样说:
$max_value = 65535;
因为这样可以让人们轻松将其与65500(< $max_value
)或66000(> $max_value
)等其他值进行比较。
相反,位字段。
$default_state = 65535;
这并没有告诉我所有的比特都是一个(事实上它们都是)。
$default_state = 0xFFFF;
这样做:每个十六进制数字代表4位,F
表示4个1位。因此,0xFFFF
为二进制0b1111111111111111
。
当程序员想要明确二进制表示很重要时,可以使用十六进制表示法,这可能比精确的数值更重要。
答案 1 :(得分:7)
如果您的代码正在进行二进制操作,那么使用这样的十六进制值在上下文中比十进制更容易理解;虽然我不认为mt_rand是其中一个上下文(特别是因为下限是十进制的,它只是你示例中的十六进制上限)
答案 2 :(得分:6)
它只是65535的十六进制表示法。在您提供的上下文中,两者之间没有重要区别,但它更容易记住&#34; 0,x和四个f字符&# 34;比65535。
答案 3 :(得分:0)
0xffff 是一个十六进制数字。 0x 仅告诉您 0x 之后的值是十六进制。十六进制从 0到9 和从 a到f 的 16位。
要计算十六进制数字的十进制值,您必须将数字值乘以16乘以该数字在数字中所占的幂。
示例:
ffff = (15*16^3) + (15*16^2) + (15*16^1) + (15*16^0) = 65535
f的值为15,它是数字的0 1 2和3的位置。
34a6 = (3*16^3) + (4*16^2) + (10*16^1) + (6*16^0) = 13478
希望有帮助