codewars.comでいくつかの問題が発生しましたが、基本的な暗号化に関する問題が発生しました(https://www.codewars.com/kata/basic-encryption/javascript)。目標は、文字列の値を取得し、x値をASCIIチャートの右側にシフトすることです。ここビットワイズ演算子はどのように機能しますか?
は私の最初の解決策だった:
function encrypt(text, rule) {
let res = ''
for(let i = 0; i<text.length; i++) {
res += (String.fromCharCode(text.charCodeAt(i)+rule))
}
return res
};
しかし、それは全てのテストに合格しなかったので、私は解決策を見て、これは試験に合格するために私を得たものです:
function encrypt(text, rule) {
let res = ''
for(let i = 0; i<text.length; i++) {
res += (String.fromCharCode(text.charCodeAt(i)+rule & 255))
}
return res
};
これは、& 255
を追加したことで、誰かが私のコードを有効にするために実際に変更されたことを私に説明することができましたか?
ヒントASCII文字は255より大きな文字コードを持つことはできません –
実際には、ASCII文字は127より大きいコードを持つことはできません。しかし、ほとんどの場合、 "8ビット" 。この問題は、有効な文字の範囲が0〜255であることを明確に述べているため、その範囲内の任意の文字を取得し、その範囲内の文字のみを返すと予想します。 '&255'は'%256'と同様にそれを確認します。 – jcaron