JS 實現"可讀"字符串轉換成"二進制的01"字符串

問題起源

看過一個漫畫, 兩位程序員在辦公司交流, 但是說的語言倒是010101相似的字符串.周圍人非常驚異.計算機的世界,確實是由01組成的.今天忽然想實現這個編碼轉換.javascript

解決思路

  1. 學過C語言的都知道, 一個char類型的字符,實際存儲的是這個字符的ASCII碼. 最終轉換是數值的進制.也就是把10進制的數字轉換成2進制的數值, 而後,每位轉換成字符, 輸出便可. 固然, 若是你考慮到多種語言環境的話, 那麼就會複雜不少. 使用強類型語言的話, 這裏建議使用Qt類庫的QCharQString.Qt支持多國語言很是好.
  2. 對於弱類型的JS來講, 訪問底層的編碼沒有強類型語言那麼直接方便. 那麼Js可否實現呢? 因此,本人嘗試了JS的實現方法.經過查閱資料,JS也提供了方便的類能夠用於解決這樣的問題.

js代碼

var str = "支持中文嗎? ying gai shi zhi chi de.";
console.log('編碼前:'+ str);

var total2str = "";
for (var i = 0; i < str.length; i++) {
      var num10 = str.charCodeAt(i);  ///< 以10進制的整數返回 某個字符 的unicode編碼
      var str2 = num10.toString(2);   ///< 將10進制數字 轉換成 2進制字符串

      if( total2str == "" ){
        total2str = str2;
      }else{
        total2str = total2str + " " + str2;
      }
}
console.log("編碼後:" + total2str);

var goal = "";
var arr = total2str.split(' ');
for(var i=0; i < arr.length; i++){
  var str2 = arr[i];
  var num10 = parseInt(str2, 2); ///< 2進制字符串轉換成 10進制的數字
  goal += String.fromCharCode(num10); ///< 將10進制的unicode編碼, 轉換成對應的unicode字符
}

console.log('解碼後:'+ goal );

效果

編碼前:支持中文嗎? ying gai shi zhi chi de.
編碼後:110010100101111 110001100000001 100111000101101 110010110000111 101010000010111 111111 100000 1111001 1101001 1101110 1100111 100000 1100111 1100001 1101001 100000 1110011 1101000 1101001 100000 1111010 1101000 1101001 100000 1100011 1101000 1101001 100000 1100100 1100101 101110
解碼後:支持中文嗎? ying gai shi zhi chi de.

參考引用

Js String 標準庫java

相關文章
相關標籤/搜索