JS 實現字元串轉換成二進位

  • 2019 年 11 月 24 日
  • 筆記

問題起源

看過一個漫畫, 兩位程式設計師在辦公司交流, 可是說的語言卻是010101類似的字元串.周圍人很是驚異.電腦的世界,確實是由01組成的.今天突然想實現這個編碼轉換.

解決思路

  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.

作 者:

zi-xing

原 文:

https://www.cnblogs.com/zi-xing/p/6033701.html