characters (0-255)
を表す数字のarray
をとるencoding function
と思われます。次に、文字をa,b, and c by modding by 3
として指定された長さだけシフトします。出力はmodded by 255
なので、有効な文字値のままです。最後に結果の符号化array of numbers representing characters
が返されます。以下は
はコードです:
function encodeIt(ascii,a,b,c) {
for(i=0;i<ascii.length;i++) {
if(i%3==0){ascii[i]=(ascii[i]+a)%256;}
if(i%3==1){ascii[i]=(ascii[i]+b)%256;}
if(i%3==2){ascii[i]=(ascii[i]+c)%256;}
}
return ascii;
}
function encodeString(myString,myAdjustments)
{
var myArray = [];
for(var i=0;i<myString.length;i++)
{
myArray.push(myString.charCodeAt(i));
}
var myArray = encodeIt(myArray,myAdjustments[0],myAdjustments[1],myAdjustments[2]);
var myEncodedString = "";
for(var i=0;i<myArray.length;i++)
{
myEncodedString+=String.fromCharCode(myArray[i]);
}
return myEncodedString;
}
var encodedString = encodeString("Hello World!",[30,80,-13]);
alert(encodedString);
var decodedString = encodeString(encodedString,[-30,-80,13]);
alert(decodedString);
とフィドル:
https://jsfiddle.net/3p79bxv2/
'ASCII [i]は'文字ではなく、ASCII値になります。 'ascii'が文字列であると仮定すると、それはです。 – vlaz
これは、asciiが文字列ではなく配列である場合にのみ意味を持ちます。文字列は不変であるため、 'ascii [i] = ascii [i] + a'は文字列内の何も変更しません。だから私はasciiが 'someWord.split( '')'によって形成された配列であると思っていますが、それは各文字のascii値を表す数字の配列になると思っています。文字列も意味をなさない。 '[45,78,52,55,78,99]'のようなもの? – Shilly
@ Shilly私は配列に関する編集をしました - 質問のために、私の解釈は正しいですか? – TMrtSmith