在寻找加密解密的时候看到一个方法,代码图片转换。原理为:字符可以转为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字符串与十六进制之间的转换的更多相关文章

  1. JS字符串和数组之间的转换

    1.字符串转换为数组 var string = '123,456,789'; var stringResult = string.split(','); console.log(stringResul ...

  2. 字符串与Objec之间互相转换

    字符串与Objec之间互相转换可通过json实现. JSON.parse(str);// 字符串转Json Object JSON.stringify(obj);// Obj转字符串

  3. js时间和时间戳之间如何转换(汇总)

    js时间和时间戳之间如何转换(汇总) 一.总结 一句话总结: 1.js中通过new Date()来获取时间对象, 2.这个时间对象可以通过getTime()方法获取时间戳, 3.也可以通过getYea ...

  4. kotlin字符串和数字之间的转换和人机交互

    继续基础学习~ 字符串和数字之间的转换 那如何转换呢,其实很简单: 编译木有报错,但是运行: 所以这里了解下. 人机交互 看这标题貌似高端的,其实也就是程序可以接受键盘的输入啦,下面开始: 首先提示用 ...

  5. Js字符串与十六进制的相互转换

    开发过程中,字符串与十六进.二进制之间的相互转换常常会用到,尤其是涉及到中文的加密时,就需要把中文转换为十六进制.下面说说具体的转换方法. 1.字符串转换为十六进制 主要使用 charCodeAt() ...

  6. Js字符串与十六进制的相互转换 【转】

    开发过程中,字符串与十六进.二进制之间的相互转换常常会用到,尤其是涉及到中文的加密时,就需要把中文转换为十六进制.下面说说具体的转换方法. 1.字符串转换为十六进制 主要使用 charCodeAt() ...

  7. JS字符串与十六进制的相互转换(转载)

    原文链接:http://www.cnblogs.com/zack-/archive/2012/04/17/website_using.html 1.字符串转换为十六进制 主要使用 charCodeAt ...

  8. Swift_ios_二进制,十进制,十六进制之间的转换

    这里所说的转换,并不是Swift中字面量之间的转换.如果是字面量之间的转换,ios系统中已经自动帮我们转换了. 例如let number1:Int = 8let number2:Int = 0b100 ...

  9. Qt中字符串和数值之间的转换

    来自<Qt5.9 C++开发指南> 普通数值和字符串之间的转换 一.从字符串转换为数值 QString类从字符串转换为整数的函数有: int QString::toInt(bool *ok ...

随机推荐

  1. SpringMVC之一:SpringMVC原理

    Spring MVC工作流程图   图一   图二  关键组件: DispatcherServlet:前端控制器,与大多数基于Java的Web框架一样, Spring MVC所有的请求都会通过一个前端 ...

  2. AI-Info-Micron-Insight:Intelligence Accelerated™

    ylbtech-AI-Info-Micron-Insight:Intelligence Accelerated™ Intelligence Accelerated™ Micron Insight 大会 ...

  3. Nuget-QRCode:QRCoder

    ylbtech-Nuget-QRCode:QRCoder 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. https://github.com/codebu ...

  4. Pokemon Master

    Pokemon Master Time Limit : 4000/2000ms (Java/Other) Memory Limit : 131072/65536K (Java/Other) Total ...

  5. SVN服务器搭建教程

    常见的源代码管理工具 CVS 历史悠久,现在几乎没人使用 SVN 集中式版本控制的代表 CVS的接班人,速度比CVS快,功能比CVS强大 在国内使用率非常高(70%~90%) GIT 分布式源代码管理 ...

  6. MySQL之创、增、删、改、查

    MySQL Select version();  当前服务器版本 Select database();  查看当前工作数据库 Show databases;   显示所有数据库 Select user ...

  7. hduoj题目分类

    基础题:1000.1001.1004.1005.1008.1012.1013.1014.1017.1019.1021.1028.1029.1032.1037.1040.1048.1056.1058.1 ...

  8. Spring入门第十三课

    通过FactoryBean来配置Bean package logan.spring.study.factoryBean; public class Car { private String brand ...

  9. java数据结构和算法08(B树的简单原理)

    这一篇首先会说说前面剩余的一点知识2-3树,然后简单说说B树,不写代码,只是简单看看原理吧! 为什么要说一下2-3树呢?了解2-3树之后能更快的了解B树: 1.简单看看2-3树 其实我们学过了前面的2 ...

  10. 2017-9-9 NOIP模拟赛

    站军姿 2bc*cosA=b^2+c^2-a^2 #include<cstdio> #include<cstdlib> #include<cmath> #inclu ...