js字符串与十六进制之间的转换
在寻找加密解密的时候看到一个方法,代码图片转换。原理为:字符可以转为16进制,与图片RGB的一个R/G/B相对应,即一个像素点可容纳3个字符(注:Canvas的RGBA,透明度A似乎不能使用,使用后,RGB会有所变化,造成无法正确解码。)网址为http://www.cnblogs.com/wangxinsheng/p/4381754.html。
中间在代码转化为图片时有用到stringToHex()方法和在图片转化为代码的时候有使用hexToString()方法。很显然,直接复制代码是不能实现相关的功能的,必须要有这两个方法封装的函数。在网上又搜了一下这两个函数,当然,字符串转化为十六进制的时候是没有问题的,代码为:
function stringToHex(str) {
var val = "";
for(var i = 0; i < str.length; i++) {
if(val == "") { val = str.charCodeAt(i).toString(16); } else { val += "," + str.charCodeAt(i).toString(16); }
}
return val;
}
不过找到的十六进制转化为字符串的函数试验了一下,不大对。找到的代码如下:
function hexToString(str){
var val="";
var arr = str.split(",");
for(arr i = 0; i < arr.length; i++){
val += arr[i].fromCharCode(i);
}
return val;
}
formCharCode()方法:静态方法,任务是接受一或多个字符编码,然后将它们转换为一个字符串,本质上与实例方法charCodeAt()执行相反的操作。charCodeAt():以字符串的形式返回给定位置的那个字符的字符编码。说是不对,指的是在stringToHex()方法中调用charCodeAt()方法之后有调用了toString(16)方法将十进制字符编码转化为了十六进制,但是stringToHex()的结果在hexToString()方法中并没有将十六进制转化为十进制就直接使用fromCharCode()方法,fromCharCode()方法会直接把对象当做十进制来转换,这明显不是十六进制转化为字符编码。另外,fromCharCode()的用法也不是 arr[i].fromCharCode(i);这种,它的使用方法为String.fromCharCode(arr[i]);这个hexToString()被我稍微改了一下,代码如下:
function hexToString(str){
var val="";
var arr = str.split(",");
for(arr i = 0; i < arr.length; i++){
val += String.fromCharCode(parseInt(arr[i],16));
}
return val;
}
其中parseInt(arr[i],16)是将十六进制转化为十进制。
当然,这种比较适合知道是十六进制的情况下调用这个hexToString()方法,要是十进制的话这个函数也会默认为十六进制。
如果是需要先对传入的参数做一个判断,这一块https://yq.aliyun.com/ziliao/87466或者是http://www.cnblogs.com/cutone/p/6007031.html,这上边有详细一点的方法。
js字符串与十六进制之间的转换的更多相关文章
- JS字符串和数组之间的转换
1.字符串转换为数组 var string = '123,456,789'; var stringResult = string.split(','); console.log(stringResul ...
- 字符串与Objec之间互相转换
字符串与Objec之间互相转换可通过json实现. JSON.parse(str);// 字符串转Json Object JSON.stringify(obj);// Obj转字符串
- js时间和时间戳之间如何转换(汇总)
js时间和时间戳之间如何转换(汇总) 一.总结 一句话总结: 1.js中通过new Date()来获取时间对象, 2.这个时间对象可以通过getTime()方法获取时间戳, 3.也可以通过getYea ...
- kotlin字符串和数字之间的转换和人机交互
继续基础学习~ 字符串和数字之间的转换 那如何转换呢,其实很简单: 编译木有报错,但是运行: 所以这里了解下. 人机交互 看这标题貌似高端的,其实也就是程序可以接受键盘的输入啦,下面开始: 首先提示用 ...
- Js字符串与十六进制的相互转换
开发过程中,字符串与十六进.二进制之间的相互转换常常会用到,尤其是涉及到中文的加密时,就需要把中文转换为十六进制.下面说说具体的转换方法. 1.字符串转换为十六进制 主要使用 charCodeAt() ...
- Js字符串与十六进制的相互转换 【转】
开发过程中,字符串与十六进.二进制之间的相互转换常常会用到,尤其是涉及到中文的加密时,就需要把中文转换为十六进制.下面说说具体的转换方法. 1.字符串转换为十六进制 主要使用 charCodeAt() ...
- JS字符串与十六进制的相互转换(转载)
原文链接:http://www.cnblogs.com/zack-/archive/2012/04/17/website_using.html 1.字符串转换为十六进制 主要使用 charCodeAt ...
- Swift_ios_二进制,十进制,十六进制之间的转换
这里所说的转换,并不是Swift中字面量之间的转换.如果是字面量之间的转换,ios系统中已经自动帮我们转换了. 例如let number1:Int = 8let number2:Int = 0b100 ...
- Qt中字符串和数值之间的转换
来自<Qt5.9 C++开发指南> 普通数值和字符串之间的转换 一.从字符串转换为数值 QString类从字符串转换为整数的函数有: int QString::toInt(bool *ok ...
随机推荐
- Lagom学习(一)
Lagom是JAVA系下响应式 微服务框架,其特性包括: 目前,大多数已有的微服务框架关注于简化单个微服务的构建,Lagom将其扩展到了微服务所构成的系统,分布式系统的复杂性. 同步通信使用HTTP, ...
- warning: conflicting types for built-in function 'puts'
warning: conflicting types for built-in function 'puts' [编译器版本] arm-linux-gcc 3.4.1 [问题描述] 在做嵌入式底层开发 ...
- win7 x64 eclipse_kepler下编译 hadoop1.1.2-celipse-plugin
1.编译前准备 a) 下载和解压hadoop-1.1.2.tar.gz b) 下载并配置ant 2.配置 a) 进入hadoop-1.1.2\src\contrib ...
- Ubuntu 12.04搭建hadoop单机版环境
前言: 本文章是转载的,自己又加上了一些自己的笔记整理的 详细地址请查看Ubuntu 12.04搭建hadoop单机版环境 Hadoop的三种运行模式 独立模式:无需任何守护进程,所有程序都在单个JV ...
- Elasticsearch检索分类详解
前言 Elasticsearch中当我们设置Mapping(分词器.字段类型)完毕后,就可以按照设定的方式导入数据. 有了数据后,我们就需要对数据进行检索操作.根据实际开发需要,往往我们需要支持包含但 ...
- HERO3+ Black Edition 视角 (FOV) 信息
HERO3+ Black Edition 视角 (FOV) 信息 问题 HERO3+ Black Edition 视角 (FOV) 信息是什么? 它在哪适用? HERO3+ Black 作答 所有视 ...
- [小工具] C#多线程|匿名委托传参数|测试网站压力--升级版
上次文章链接:http://www.sufeinet.com/thread-11-1-1.html写这些并不是不会用测试工具,也并不是无视测试工具,而是做为一个程序员希望用自己写的东西来完成一些功能, ...
- 从扫码支付想到的超级APP主宰一切,数据!数据!还是数据!
前言 做室内定位的人其实内心都明白:基于指纹方法的移动端定位,无论paper每年出来多少,距离真正的大规模应用的距离还有多么遥远.指纹采集,指纹更新,似乎在生产实践上就是不可能的难题.所有还在基于人工 ...
- 模板 - 动态规划 - 数位dp
#include<bits/stdc++.h> using namespace std; #define ll long long ]; ll dp[][/*可能需要的状态2*/];//不 ...
- Unity 5.6 beta版本新特性
http://manew.com/thread-98549-1-1.html 最新发布的beta版改进了编辑器和2D功能,图形性能更佳,加入新的视频播放器,并添加了对Facebook Gameroom ...