(((1+Math.random())*0x10000)|0).toString(16).substring(1)是什么意思

请问,这句话是什么意思
(((1+Math.random())*0x10000)|0).toString(16).substring(1)
帮忙翻译一下,非常感谢,特别是0*10000

阅读 4.9k
1 个回答

那是 0x10000 不是 0*10000,是字母 x 不是运算符 *。这是十六进制,换成十进制就是 65536

拆解一下:

(1 + Math.random()) * 0x10000 生成一个 1~65536 的随机数,为了后面方便,把这个结果设为 x 吧。

x | 0 位运算,确切的说是或运算。一个数跟 0 做或运算,等于只保留这个数的整数部分。这个结果设为 y 吧。

y.toString(16) 转成十六进制。这个结果设为 z 吧。

z.substring(1) 从左数第一个字符开始截断,保留后面的字符串。

推荐问题