我有這段代碼。請讓我明白這段代碼究竟意味着什麼0x0F是什麼意思?這個代碼是什麼意思?
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?而且,>>>意思?
我有這段代碼。請讓我明白這段代碼究竟意味着什麼0x0F是什麼意思?這個代碼是什麼意思?
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?而且,>>>意思?
>>>
是無符號的按位右移運算符。 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
從我可以告訴,它看起來就像是總結的所有字符的單個半字節的值的字符串,也許是爲了建立某種形式的校驗和。
0x0F
是十六進制的數字。而>>>
是按位右移運算符。
0x0f
是一個字節的十六進制表示。具體而言,位模式00001111
它將該字符的值,移位它4個位置向右(>>> 4
,這是一個unsigned shift),然後執行逐位AND
與圖案以上 - 例如忽略左最多4位產生數字0-15。
然後它將該數字添加到原始字符的最右側4位(第二個& 0x0F
沒有移位),另一個0-15數字。
'0x0f'是一個字節的十六進制表示。具體來說,位模式'00001111' – Basic
好吧,那個表達式如何使它在那裏工作?那麼'(x >>> 4)&0x0F'如何返回整數值,因爲chatAt()函數需要整數輸入 – Prakash