JS 实现"可读"字符串转换成"二进制的01"字符串
问题起源
看过一个漫画, 两位程序员在办公司交流, 可是说的语言却是010101类似的字符串.周围人很是惊异.计算机的世界,确实是由01组成的.今天突然想实现这个编码转换.
解决思路
- 学过C语言的都知道, 一个
char
类型的字符,实际存储的是这个字符的ASCII码. 最终转换是数值的进制.也就是把10进制的数字转换成2进制的数值, 然后,每位转换成字符, 输出即可. 当然, 如果你考虑到多种语言环境的话, 那么就会复杂很多. 使用强类型语言的话, 这里建议使用Qt类库的QChar
和QString
.Qt支持多国语言非常好. - 对于弱类型的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 实现"可读"字符串转换成"二进制的01"字符串的更多相关文章
- LoadRunner 如何将英文的字符串转换成UTF-8格式的字符串?
7.48 如何手动转换字符串编码 1.问题提出 如何将英文的字符串转换成UTF-8格式的字符串? 2.问题解答 可以使用lr_convert_string_encoding函数将字符串从一种编码手动 ...
- WUSTOJ 1237: 将八进制的字符串转换成等价的十进制字符串(Java)
1237: 将八进制的字符串转换成等价的十进制字符串 题目 输入八进制,输出十进制.更多内容点击标题. 分析 输入的八进制数有20位.已经超出了Integer.MAX_VALUE的范围,因此此 ...
- Gson字符串编码,字符串转换成图片保存,二进制转换成图片保存
import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.File; import ...
- json 字符串转换成对象,对象转换成json字符串
json 字符串转换成对象,对象转换成json字符串 前端: 方法一: parseJSON方法: [注意jquery版本问题] var str = '{"name":&qu ...
- json字符串转换成json对象,json对象转换成字符串,值转换成字符串,字符串转成值
一.json相关概念 json,全称为javascript object notation,是一种轻量级的数据交互格式.采用完全独立于语言的文本格式,是一种理想的数据交换格式. 同时,json是jav ...
- C# 字符串string类型转换成DateTime类型 或者 string转换成DateTime?(字符串转换成可空日期类型)
在c#中,string类型转换成DateTime类型是经常用到的,作为基本的知识,这里在此做个小结.一般来说可以使用多种方法进行转换,最常用的就是使用Convert.ToDateTime(string ...
- 17.把字符串转换成整数[atoi]
[题目] 把字符串转换成整数,需要考虑字符串有效性. [代码] C++ Code 123456789101112131415161718192021222324252627282930313233 ...
- php 把驼峰样式的字符串转换成下划线样式的字符串
1.如何在php中把驼峰样式的字符串转换成下划线样式的字符串.例:输入是FooBar的话,输出则是foo_bar 以下是用正则的方式去完成,既然用到正则,方法肯定就不只一种,我们看下下面的方式 ech ...
- Python使用函数实现把字符串转换成整数
需求:假设Python没有提供内置函数int如果使用函数方式实现把一串字符串转换成整数例如把字符串‘12345‘转换成整数12345 思路 1,字符串也是序列可以使用map函数处理分割成一个列表 2, ...
随机推荐
- (转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小
一.问题: 一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小, 所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件 二.解决这个问 ...
- Format
strTimeZone := Format('%s ~ %s',[formatdatetime('yyyy-mm-dd',dtpStartTime.DateTime), formatdatetime( ...
- iOS之使用模拟器报错:resource fork, Finder information, or similar detritus not allowed
很奇怪的问题,使用真机测试没有问题.但使用模拟器测试的时候就会报这样的错误,错误类型为:Code Sign Error 错误提示是这样:resource fork, Finder informatio ...
- LeetCode 387. First Unique Character in a String
Problem: Given a string, find the first non-repeating character in it and return it's index. If it d ...
- Angular动画(ng-class)
ng-class 同 触发的是 addClass//当给元素添加一个class时触发, removeClass //把元素的class移除时触发 <ul ng-style="ulWid ...
- iOS 删除、重新排序xcdatamodel
找到Xcode项目文件.xcodeproj,查看包内容. 里面有project.pbxproj,用文本编辑器打开. 找到类似如下内容段: /* Begin XCVersionGroup section ...
- Android 权限列表
访问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES ,允许读写check-in数据库属性表的权限 ( Allows read/write acces ...
- 在linux下Ant的环境配置
Ant(英文全称为another neat tool,另一个简洁的工具)是一个基于Java的生成工具,Ant将会被应用到Java项目中. 同样的,现在要来安装Ant(最近要安装的东西还蛮多的=m=), ...
- Centos7 编译安装 Nginx PHP Mariadb Memcached 扩展 ZendOpcache扩展 (实测 笔记 Centos 7.3 + Mariadb 10.1.20 + Nginx 1.10.2 + PHP 7.1.0 + Laravel 5.3 )
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7-x86_64-Minimal-1611.iso 安装步骤: 1.准备 1.0 查看硬 ...
- 在Excel中把横行与竖列进行置换、打勾号
在Excel中把横行与竖列进行置换:复制要置换的单元,在新的单元上右键->选择性复制,会出现对话框,选中“置换”,即可在Excel中打勾号,左手按住ALT不放,右手在小键盘也就是右边的数字键盘依 ...