博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中byte与16进制字符串的互转
阅读量:6148 次
发布时间:2019-06-21

本文共 1744 字,大约阅读时间需要 5 分钟。

hot3.png

Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符,即把byte的高4位和低4位分别转换成相应的16进制字符H和L,并组合起来得到byte转换到16进制字符串的结果new String(H) + new String(L)。即byte用十六进制表示只占2位。

同理,相反的转换也是将两个16进制字符转换成一个byte,原理同上。

根据以上原理,我们就可以将byte[] 数组转换为16进制字符串了,当然也可以将16进制字符串转换为byte[]数组了。

 

 

/**    * Convert char to byte    * @param c char    * @return byte    */    private byte charToByte(char c) {		return (byte) "0123456789ABCDEF".indexOf(c);	}	/*    * Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。    * @param src byte[] data    * @return hex string    */      public static String bytesToHexString(byte[] src){       StringBuilder stringBuilder = new StringBuilder("");       if (src == null || src.length <= 0) {           return null;       }       for (int i = 0; i < src.length; i++) {           int v = src[i] & 0xFF;           String hv = Integer.toHexString(v);           if (hv.length() < 2) {               stringBuilder.append(0);           }           stringBuilder.append(hv);       }       return stringBuilder.toString();   }   /**    * Convert hex string to byte[]    * @param hexString the hex string    * @return byte[]    */   public byte[] hexStringToBytes(String hexString) {       if (hexString == null || hexString.equals("")) {           return null;       }       hexString = hexString.toUpperCase();       int length = hexString.length() / 2;       char[] hexChars = hexString.toCharArray();       byte[] d = new byte[length];       for (int i = 0; i < length; i++) {           int pos = i * 2;           d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));       }       return d;   }

转载于:https://my.oschina.net/kanlianhui/blog/176602

你可能感兴趣的文章
Jenkins持续集成环境部署
查看>>
检查磁盘利用率并且定期发送告警邮件
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
摄像机与绕任意轴旋转
查看>>
rsync 服务器配置过程
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
Elasticsearch增删改查
查看>>
oracle归档日志增长过快处理方法
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>