在寻找加密解密的时候看到一个方法,代码图片转换。原理为:字符可以转为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. 洛谷P2014——选课

    题目:https://www.luogu.org/problemnew/show/P2014 树状DP,注意枚举当前子树中选几个时的边界. 代码如下: #include<iostream> ...

  2. 树——平衡二叉树插入和查找的JAVA实现

    package com.tomsnail.data.tree; /** * AVL二叉平衡树 * @author tomsnail * @date 2015年3月30日 下午4:35:50 */ pu ...

  3. RT-Thread的线程(任务)处理 rt_thread_create/rt_thread_init区别

    RT-Thread中使用线程这个概念,而不是任务.两者相似,我在这里把他的线程当作任务来理解了 1.任务处理: 动态任务相关API 创建任务:rt_thread_create函数,创建任务之后会返回r ...

  4. 四 Vue学习 router学习

    index.js: 按需加载组件: const login = r => require.ensure([], () => r(require('@/page/login')), 'log ...

  5. SSH 整合时报内存溢出 缓存无法释放

    简单点讲, 我的问题就是jar包一样, 但版本不一样, 还有重复的jar导入了, 导致了这个问题, 别人的我不知道, 问题知道了, 答案也就有了, 是重复加载的问题, 删掉重复的就好了.

  6. [bzoj2154]Crash的数字表格(mobius反演)

    题意:$\sum\limits_{i = 1}^n {\sum\limits_{j = 1}^m {lcm(i,j)} } $ 解题关键: $\sum\limits_{i = 1}^n {\sum\l ...

  7. Java之匿名类讲解

    参考https://blog.csdn.net/jiaotuwoaini/article/details/51542059 匿名类,正如名字一样在java中没有名字标识的类,当然了编译后还是会安排一个 ...

  8. login.aspx.cs

    using System;                                                                 //指令+系统(命名空间)using Sys ...

  9. AJAX 入门教程

    一.前言 AJAX 是我们教程用到的请求数据的技术,在这里我就给自己做一个小结. 二.案例 我使用的是 JQuery 的 AJAX 来实践.后端服务我使用的是 c# 的mvc. 后端代码: using ...

  10. Myeclipse如何使用自带git工具向远程仓库提交代码(转)

    Myeclipse如何使用自带git工具向远程仓库提交代码 第一步:将改动的代码标记 项目右键:team->synchronize workspace 点击确定 项目右键>add to g ...