Hex编码字节
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编码字节的更多相关文章
- 浅谈Hex编码算法
一.什么是Hex 将每一个字节表示的十六进制表示的内容,用字符串来显示. 二.作用 将不可见的,复杂的字节数组数据,转换为可显示的字符串数据 类似于Base64编码算法 区别:Base64将三个字节转 ...
- Hex编码
编码原理 Hex编码就是把一个8位的字节数据用两个十六进制数展示出来,编码时,将8位二进制码重新分组成两个4位的字节,其中一个字节的低4位是原字节的高四位,另一个字节的低4位是原数据的低4位,高4位都 ...
- 普通字符串与Hex编码字符串之间转换
import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Hex; public clas ...
- Hex编码 十六进制编码
import java.io.UnsupportedEncodingException; import java.net.URLEncoder; /** * HEX字符串与字节码(字符串)转换工具 ...
- C# Hex编码和解码
/// 从字符串转换到16进制表示的字符串 /// 编码,如"utf-8","gb2312" /// 是否每字符用逗号分隔 public static stri ...
- 使用hex编码绕过主机卫士IIS版本继续注入
本文作者:非主流 测试文件的源码如下: 我们先直接加上单引号试试: http://192.168.0.20/conn.asp?id=1%27 很好,没有报错.那我们继续,and 1=1 和and 1= ...
- js支持中文的hex编码 bin2hex (utf-8)
背景: 最近对接接口的时候需要将请求参数转为16进制,因此研究了下这个bin2hex.在js中转16进制 使用的是: str.charCodeAt(i).toString(16); 在遇到中文的时候编 ...
- 代码,绘画,设计常用的颜色名称-16进制HEX编码-RGB编码 对照一览表
排列方式,英文名称的字典序 颜色名 HEX16进制编码 RGB编码 AliceBlue F0F8FF 240,248,255 AntiqueWhite FAEBD7 250,235,215 Aqua ...
- 浅谈编码Base64、Hex、UTF-8、Unicode、GBK等
网络上大多精彩的回答,该随笔用作自我总结: 首先计算机只认得二进制,0和1,所以我们现在看到的字都是经过二进制数据编码后的:计算机能针对0和1的组合做很多事情,这些规则都是人定义的:然后有了字节的概念 ...
随机推荐
- iOS设备的尺寸
iOS设备的尺寸有两种统计单位:像素和点,对于程序员来说,只需要记住点即可. 常见的iOS设备的尺寸(点) 分辨率(点) 设备 分辨率(像素) 320*480 4.4s 320*480(4) 640* ...
- 【python】and和or的用法
python 中的and从左到右计算表达式,若所有值均为真,则返回最后一个值,若存在假,返回第一个假值. or也是从左到有计算表达式,返回第一个为真的值. IDLE 1.2.4>>> ...
- log4net:保存自定义参数到数据库
log4net:保存日志到数据库 自定义参数 新建一个类,继承于PatternLayoutConverter public class CustomerPatternConverter : Patte ...
- STM32F4 SPI2初始化及收发数据【使用库函数】
我的STM32F4 Discovery上边有一个加速度传感器LIS302DL.在演示工程中,ST的工程师使用这个传感器做了个很令人羡慕的东西:解算开发板的姿态.当开发板倾斜时候,处于最上边的LED点亮 ...
- buildbot的codebaseGenerator
buildbot的codebaseGenerator文档非常简单,简单到令人发指. 也没有一个例子,唉,辛苦了好几个小时才研究清楚怎么设置. 赶紧记录下吧,不然下次又要纠结. 应用场景:web sta ...
- eclipse中如何关闭运行时自动保存?
Eclipse没有提供自动保存的功能,只能自己写脚本每隔多久保存一次,或监听修改即保存.设置方法:1.打开:preferences>run/debug>launching2.选择save ...
- [PAT]数列求和(20)
#include "stdio.h" #include "malloc.h" #include "math.h" void calc(int ...
- PHP连接SQLServer
连接前配置系统: 1.检查文件 php5.2.5/ntwdblib.dll 默认下面有一个,不能连接再替换. 下载正确版本的 ntwdblib.dll (2000.80.194.0),地址: http ...
- 去除DEDECMS后台预览文章URL地址多余的数字信息
在使用织梦模板时发现这样一个问题:在后台预览文章的时候,出现的文章网址尽管是静态URL,但是会在网址的尾部出现问号并跟随一个时间戳,在复制URL时就显得很不方便.那么如何解决这一问题呢? 经过查找资料 ...
- Linux:去除认证,加速 SSH登录
编辑配置文件 /etc/ssh/sshd_config vim /etc/ssh/sshd_config 找到 UseDNS选项,如果没有注释,将其注释 #UseDNS yes 添加 UseDNS n ...