1、将字节数组转换为字符串

/**
* 将字节数组转换为字符串
* 一个字节会形成两个字符,最终长度是原始数据的2倍
* @param data
* @return
*/
public static String toHex(byte[] data){
String ret = null; //TODO 将字节数组转换为字符串
if (data != null && data.length>0) {
StringBuilder sb = new StringBuilder();
for (byte b: data){
//分别获取高四位,低四位的内容,将两个数值,转为字符
int h = (b>>4)&0x0f;
int l = b&0x0f;
char ch ,cl;
if( h > 9 ){
ch = (char) ('A'+(h-10));
}else{ //0--9
ch = (char) ('0'+h);
} if(l>9){
cl = (char) ('A'+(l-10));
}else{ //0--9
cl = (char) ('0'+l);
} sb.append(ch).append(cl);
}
ret = sb.toString();
} return ret;
}

2、将字符串转换为字节数组

public static byte[] fromHex(String str) {
byte[] ret = null; //TODO 将Hex编码的字符串,还原为 原始的字节数组
if (str != null) {
int len = str.length();
if (len > 0 && len % 2 == 0) {
char[] chs = str.toCharArray();
ret = new byte[len / 2];
for (int i = 0, j = 0; i < len; i += 2, j++) {
char ch = chs[i];
char cl = chs[i + 1]; int ih = 0, il = 0, v = 0;
if (ch >= 'A' && ch <= 'F') {
ih = 10 + (ch - 'A');
} else if (ch >= 'a' && ch <= 'f') {
ih = 10 + (ch - 'a');
} else if (ch >= '0' && ch <= '9') {
ih = ch - '0';
} if (cl >= 'A' && cl <= 'F') {
il = 10 + (cl - 'A');
} else if (cl >= 'a' && cl <= 'f') {
il = 10 + (cl - 'a');
} else if (cl >= '0' && cl <= '9') {
il = cl - '0';
} v = ((ih & 0x0f) << 4) | (il & 0x0f);
//赋值
ret[j] = (byte) v;
}
}
}
return ret;
}

Hex编码字节的更多相关文章

  1. 浅谈Hex编码算法

    一.什么是Hex 将每一个字节表示的十六进制表示的内容,用字符串来显示. 二.作用 将不可见的,复杂的字节数组数据,转换为可显示的字符串数据 类似于Base64编码算法 区别:Base64将三个字节转 ...

  2. Hex编码

    编码原理 Hex编码就是把一个8位的字节数据用两个十六进制数展示出来,编码时,将8位二进制码重新分组成两个4位的字节,其中一个字节的低4位是原字节的高四位,另一个字节的低4位是原数据的低4位,高4位都 ...

  3. 普通字符串与Hex编码字符串之间转换

    import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Hex; public clas ...

  4. Hex编码 十六进制编码

    import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /**  * HEX字符串与字节码(字符串)转换工具 ...

  5. C# Hex编码和解码

    /// 从字符串转换到16进制表示的字符串 /// 编码,如"utf-8","gb2312" /// 是否每字符用逗号分隔 public static stri ...

  6. 使用hex编码绕过主机卫士IIS版本继续注入

    本文作者:非主流 测试文件的源码如下: 我们先直接加上单引号试试: http://192.168.0.20/conn.asp?id=1%27 很好,没有报错.那我们继续,and 1=1 和and 1= ...

  7. js支持中文的hex编码 bin2hex (utf-8)

    背景: 最近对接接口的时候需要将请求参数转为16进制,因此研究了下这个bin2hex.在js中转16进制 使用的是: str.charCodeAt(i).toString(16); 在遇到中文的时候编 ...

  8. 代码,绘画,设计常用的颜色名称-16进制HEX编码-RGB编码 对照一览表

    排列方式,英文名称的字典序 颜色名 HEX16进制编码 RGB编码 AliceBlue F0F8FF 240,248,255 AntiqueWhite FAEBD7 250,235,215 Aqua ...

  9. 浅谈编码Base64、Hex、UTF-8、Unicode、GBK等

    网络上大多精彩的回答,该随笔用作自我总结: 首先计算机只认得二进制,0和1,所以我们现在看到的字都是经过二进制数据编码后的:计算机能针对0和1的组合做很多事情,这些规则都是人定义的:然后有了字节的概念 ...

随机推荐

  1. 调Windows 7的图片浏览器查看图片

    public static void viewPicFromWindows(string pPicPath) { if (pPicPath!="" && Syste ...

  2. wdcp的安装扩展模块

    其实就是官方包里面的所有附加模块全部支持啦.~~是在官方的基础上修改的优化了每次都解压缩php源码包,按需解压缩使用方法如下wget http://git.oschina.net/loblog/mem ...

  3. DB2导出脚本,重新建立数据库

    在做项目的时候,我们经常会涉及到数据库的迁移 所以我们需要导出 db2数据的建库脚本,存储过程脚本,函数脚本, 我是这么做的 windows键---cmd---进入命令-----db2cmd----进 ...

  4. PHP DES 加解密

    代码很简单,如下: <?php $key = 'very important data'; function jiami($key, $str) { /* Open module, and cr ...

  5. POJ2411

    题目大意:一个宽w高为h的棋盘,现在要用1*2的多米诺骨牌不重叠地覆盖整个棋盘,问有多少种方案. h<11,w<11 分析:1.h*w若为奇数,则无解. 2.按行处理.处理第i行时,保证前 ...

  6. 读CopyOnWriteArrayList有感

    除了加锁外,其实还有一种方式可以防止并发修改异常,这就是将读写分离技术(不是数据库上的). 先回顾一下一个常识: 1.JAVA中“=”操作只是将引用和某个对象关联,假如同时有一个线程将引用指向另外一个 ...

  7. 圆内接三角形(X神的代码玩的真好)

    设$S$为半径等于$1$的圆内接三角形的面积,则$4S+\dfrac 9S$的最小值是_______. [分析与解] 先证明$S$的最大值为$\dfrac{3\sqrt 3}4$.设$\triangl ...

  8. java gui 下拉框中项删除按钮

    http://www.cnblogs.com/kangls/archive/2013/03/21/2972943.html http://m.blog.csdn.net/blog/ycb1689/74 ...

  9. DirectBuffer

    1.如何分配,分配是哪里的内存 ByteBuffer.allocateDirect()来分配(ByteBuffer.allocate()分配堆内内存),分配的是非Heap(堆外)的内存,不排除操作系统 ...

  10. 配置SQL Server 2005 远程连接(转)

    方法如下:  一.为 SQL Server 2005 启用远程连接1. 单击"开始",依次选择"程序"."Microsoft SQL Server 2 ...