0x0F是什么意思?这段代码意味着什么?

时间:2012-10-20 15:36:23

标签: javascript

我有这个代码。请让我理解这段代码实际意味着什么

  for(var i = 0; i < input.length; i++)
  {
    x = input.charCodeAt(i);
    output += hex_tab.charAt((x >>> 4) & 0x0F)
           +  hex_tab.charAt( x        & 0x0F);
  }

什么是0x0F?并且,&gt;&gt;&gt;意思?

4 个答案:

答案 0 :(得分:14)

>>>是无符号的按位右移运算符。 0x0F是十六进制数,十进制数等于15。它代表低四位并转换位模式0000 1111&是一种按位AND操作。

(x >>> 4) & 0x0F为您提供一个字节的高位半字节。因此,如果您有6A,则基本上最终会得到06

6A = ((0110 1010 >>> 4) & 0x0F) = (0000 0110 & 0x0F) = (0000 0110 & 0000 1111) = 0000 0110 = 06

x & 0x0F为您提供字节的低位半字节。因此,如果您有6A,则最终会得到0A

6A = (0110 1010 & 0x0F) = (0110 1010 & 0000 1111) = 0000 1010 = 0A

从我所知道的,看起来它总结了字符串中所有字符的各个半字节的值,也许是为了创建某种类型的校验和。

答案 1 :(得分:4)

0x0f是一个字节的十六进制表示。具体而言,位模式00001111

它取得了角色的价值,将它向右移动了4个位置(>>> 4,它是unsigned shift),然后使用上面的模式执行逐位AND - 例如,忽略最左边的4位,得到数字0-15。

然后它将该数字添加到原始字符的最右边4位(第二个& 0x0F没有移位),另一个0-15数字。

答案 2 :(得分:0)

它是Ctrl + O(请参见Ascii图表http://www.physics.udel.edu/~watson/scen103/ascii.html

答案 3 :(得分:-1)

0x0F是十六进制数。 >>>是按位右移运算符。