js自定義實現的簡單編碼和解碼程式碼例項

螞蟻小編發表於2017-03-27

也可以說是自定義實現的加密和解密程式碼例項,當然是非常的簡單,採用比較常用的一些規則進行的相互轉換。

也是具有一定的使用價值的,有興趣的朋友可以自己做一下參考,下面就分享一下此程式碼,並對程式碼的實現做一下介紹。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
function isString(variable){
  return Object.prototype.toString.call(variable).indexOf('String')!= -1;
}
function isNumeric(variable){
  return !isNaN(parseFloat(variable)) && isFinite(variable);
}
function stringEncode(string){
  string = isString(string) || isNumeric(string) ? String(string) : '';
 
  var code,
    i = 0,
    code_string = '',
    len = string.length;
 
  while(i<string.length){
    code=string.charCodeAt(i);
    code_string+='' + String(code).length + code;
    i++;
  }
  return code_string;
}
 
function stringDecode(code){
  var i=0,code_len,decode_string='';
  code=String(code);
  while(i<code.length){
    code_len=+code.charAt(i);
    i++;
    decode_string+=String.fromCharCode(+code.substr(i,code_len));
    i+=code_len;
  }
  return decode_string;
}
var str="antzone";
var encodeStr=stringEncode(str);
console.log(encodeStr);
console.log(stringDecode(encodeStr));

上面的程式碼實現了我們的要求,可以對指定的字串進行編碼和解碼,下面介紹一下它的實現過程。

一.程式碼註釋:

1.function isString(variable){

  return Object.prototype.toString.call(variable).indexOf('String')!= -1;

}

上面的程式碼可以判斷引數是否是字串。

2.function isNumeric(variable){

  return !isNaN(parseFloat(variable)) && isFinite(variable);

}

上面的程式碼可以判斷引數是否是數字。

3.function stringEncode(string){},此函式可以將自定的字串進行編碼。

4.string = isString(string) || isNumeric(string) ? String(string) : '',如果引數string是字串或者是數字,那麼就執行String(string) ,否則的話返回一個空字元。

5.var code,i = 0,code_string = '',len = string.length,宣告相應的變數。6.while(i<string.length){

    code=string.charCodeAt(i);

    code_string+='' + String(code).length + code;

    i++;

  }

while迴圈語句是實現編碼的核心所在,code=string.charCodeAt(i)指定索引位置的unicode編碼值(十進位制形式),code_string+='' + String(code).length + code將當前字元的編碼的位數和unicode碼值進行字串連線,每迴圈一次進行一次連線累加。

6.return code_string,返回編碼後的字串。

7.function stringDecode(code){},此函式實現瞭解碼功能,引數是要解碼的字串。

8.var i=0,code_len,decode_string='',宣告一系列的變數。

9.code=String(code),確保是字串,這樣的話引數也允許是數字形式。

10.while(i<code.length){

    code_len=+code.charAt(i);

    i++;

    decode_string+=String.fromCharCode(+code.substr(i,code_len));

    i+=code_len;

}此迴圈語句是解碼的核心,code_len=+code.charAt(i),從第0個開始進行遍歷,它獲取的是第一個字元的unicode碼值的長度(也就是這個碼值十進位制字串形式的長度),i++使i的值加1,code.substr(i,code_len)從i位置開始進行擷取code_len的長度,擷取的字串恰好相應字元的unicode碼值,此語句前面的加號是為了將字串轉換為數字,然後使用String.fromCharCode()轉換為響應的字元,然後進行字串連線操作。

11.i+=code_len,設定下一次開始擷取的位置。

12.return decode_string,返回解碼後的字串。

二.相關閱讀:

1.call()函式可以參閱js call()一章節。

2.indexOf()函式可以參閱javascript indexOf()一章節。

3.isNaN()函式可以參閱javascript isNaN()一章節。

4.parseFloat()函式可以參閱javascript parseFloat()方法一章節。

5.isFinite()函式可以參閱javascript isFinite()方法一章節。

6.charCodeAt()函式可以參閱javascript charCodeAt()一章節。

7.charAt()函式可以參閱javascript charAt()一章節。

8.fromCharCode()函式可以參閱javascript fromCharCode()一章節。

9.substr()函式可以參閱javascript substr()一章節。

相關文章