今回求めたい値は、'ff' → '00' 、'00' → 'ff' 、'33' → 'cc' といったビット反転です。
parseInt('ff', 16); >> 255
~parseInt('ff', 16) >> -256あれ?なんか変??16進数に戻してみます。
(~parseInt('ff', 16)).toString(16); >> "-100"これは本来求めたかった値とは異なります。
(~parseInt('ff', 16)>>>0).toString(16); >> "ffffff00"
(~parseInt('ff', 16)>>>0).toString(16).slice(-2); >> "00"
以上で16進数2桁のビット反転処理を実現することができました。
ちなみに、javascriptの文字列処理「slice メソッド」と「substr メソッド」、引数の渡し方が紛らわしく混乱するので注意が必要です。
javascriptでビット演算を行うときに注意すべきこと。
投稿日: