将字节数组转换为16进制的三种方案
来源:互联网 发布:照片冲印排版软件 编辑:程序博客网 时间:2024/06/05 23:50
在开发的过程中少不了将字节数组转化为16进制字符串来保存,这样的场景尤其多见于加密。所以今天将最常用的三种方法总结一下。
首先先来一种大家都能接受的,也是最通俗易懂的:分别取出字节的高四位与低四位然后分别得出10进制0-15这样的值,再利用一个字符串数组完美完成。对于转化的理解,当然最推荐第三种方式了。
/** * first method * * @param bytes * @return */ public static String bytes2hexFirst(byte[] bytes) { final String HEX = "0123456789abcdef"; StringBuilder sb = new StringBuilder(bytes.length * 2); for (byte b : bytes) { // 取出这个字节的高4位,然后与0x0f与运算,得到一个0-15之间的数据,通过HEX.charAt(0-15)即为16进制数 sb.append(HEX.charAt((b >> 4) & 0x0f)); // 取出这个字节的低位,与0x0f与运算,得到一个0-15之间的数据,通过HEX.charAt(0-15)即为16进制数 sb.append(HEX.charAt(b & 0x0f)); } return sb.toString(); }
第二种将每个字节与0xFF进行与运算,然后转化为10进制,然后借助于Integer再转化为16进制
/** * second method * * @param bytes * @return */ public static String bytes2hex02(byte[] bytes) { StringBuilder sb = new StringBuilder(); String tmp = null; for (byte b : bytes) { // 将每个字节与0xFF进行与运算,然后转化为10进制,然后借助于Integer再转化为16进制 tmp = Integer.toHexString(0xFF & b); if (tmp.length() == 1)// 每个字节8为,转为16进制标志,2个16进制位 { tmp = "0" + tmp; } sb.append(tmp); } return sb.toString(); }
第三种也是最简单的一种直接利用BigInteger的方法,应该是最简单的方案了。
/** * 利用签名辅助类,将字符串字节数组 * * @param str * @return */ public static byte[] md5(String str) { byte[] digest = null; try { MessageDigest md = MessageDigest.getInstance("md5"); return digest = md.digest(str.getBytes()); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return null; } /** * third method * * @param bytes * @return */ public static String bytes2hex01(byte[] bytes) { /** * 第一个参数的解释,记得一定要设置为1 * signum of the number (-1 for negative, 0 for zero, 1 for positive). */ BigInteger bigInteger = new BigInteger(1, bytes); return bigInteger.toString(16); }
好啦 希望能帮到大家 ��
0 0
- 将字节数组转换为16进制的三种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java将字节数组转化为16进制字符串的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- Java 将字节数组转化为16进制的多种方案
- C# string字符串转换为字节数组和转换为16进制的字符串形式
- 如何将字节数组转换为十六进制的字符串
- 将一个字节数组从任意字节offset开始,长为len的字节转换为整数
- android 将图片内容解析成字节数组,将字节数组转换为Ima ...
- 用VB.NET将字节数组转换为字符串
- 关于Studio导入项目一直卡在Building xx Gradle project info的解决办法
- hadoop中map和reduce的数量设置问题
- CSS学习 二:选择器
- EL表达式讲解
- j加盟的优先之选 好嘢鸡排
- 将字节数组转换为16进制的三种方案
- [NOIP模拟][dp][codevs]p1401逆序对统计
- 欢迎使用CSDN-markdown编辑器
- Retrofit源码解析---执行请求(DefaultCallAdapterFactory)
- 当 IDENTITY_INSERT 设置为 OFF 时,不能为表中的标识列插入显式值
- LeetCode 62. Unique Paths
- UE4项目运行时显示鼠标指针
- leetCode_Max Sum of Rectangle No Larger Than K
- 用动态规划来优化0-1背包问题