1. ホーム
  2. javascript

[解決済み] 0x0Fとはどういう意味ですか?また、このコードは何を意味するのでしょうか?

2022-02-18 17:55:33

質問内容

このようなコードがあります。このコードが実際に何を意味するのか、理解させてください。

  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 は16進数で、10進数では15に相当します。これは下位4ビットを表し,次のようなビットパターンに変換されます。 0000 1111 . & はビット単位の AND 演算を行う。

(x >>> 4) & 0x0F は、1バイトの上位ニブルを与えます。ですから、もし 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

私が見たところ、文字列内のすべての文字の個々のニブルの値を合計して、おそらくある種のチェックサムを作っているように見えます。