问题起源

看过一个漫画, 两位程序员在办公司交流, 可是说的语言却是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.

参考引用

Js String 标准库


最新文章

  1. BZOJ 3160: 万径人踪灭
  2. CLR线程池
  3. Math类中的BigDecimal
  4. MUI - 图片预览(perviewimage)的优化
  5. HDFS数据迁移解决方案之DistCp工具的巧妙使用
  6. 2)Java中的==和equals
  7. PHP利器-WAMPServer
  8. v4l2采集视频和图片源码
  9. opencv 小程序170323
  10. BaseAction 使用
  11. Java学习点滴——Class和反射
  12. Python之父:为什么操作符很有用?
  13. linux基础练习题(3)
  14. java基础(三) -基本数据类型
  15. django中orm的批量操作
  16. CentOS7下Docker中构建可以自动发布到项目的Tomcat容器
  17. 解决UnicodeEncodeError。python的docker镜像增加locale 中文支持
  18. Zookeeper 配置集群环境详解
  19. 分享自己使用的在线UML画图工具
  20. windows上apache是线程处理请求,linux上apache是进程处理请求

热门文章

  1. linux zip命令使用
  2. Puppet自动化运维-C/S架构概念(1)
  3. Java EE之搭建论坛系统(使用JForum)
  4. XVI Open Cup named after E.V. Pankratiev. GP of Ukraine
  5. IIS ISAPI
  6. Python开发工具PyCharm个性化设置(图解)
  7. JAVA使用SAX解析XML文件
  8. Array.prototype.filter()的实现
  9. Erlang error handling
  10. 浏览器全屏事件(Html5)