package mobi.dzs.android.util;import java.util.Locale;/*** 16进制值与String/Byte之间的转换* @author JerryLi* @email lijian@dzs.mobi* @data 2011-10-16* */
public class CHexConver
{private final static char[] mChars = "0123456789ABCDEF".toCharArray();private final static String mHexStr = "0123456789ABCDEF";  /** * 检查16进制字符串是否有效* @param sHex String 16进制字符串* @return boolean*/  public static boolean checkHexStr(String sHex){  String sTmp = sHex.toString().trim().replace(" ", "").toUpperCase(Locale.US);int iLen = sTmp.length();if (iLen > 1 && iLen%2 == 0){for(int i=0; i<iLen; i++)if (!mHexStr.contains(sTmp.substring(i, i+1)))return false;return true;}elsereturn false;}/** * 字符串转换成十六进制字符串* @param str String 待转换的ASCII字符串* @return String 每个Byte之间空格分隔,如: [61 6C 6B]*/  public static String str2HexStr(String str){  StringBuilder sb = new StringBuilder();byte[] bs = str.getBytes();  for (int i = 0; i < bs.length; i++){  sb.append(mChars[(bs[i] & 0xFF) >> 4]);  sb.append(mChars[bs[i] & 0x0F]);sb.append(' ');}  return sb.toString().trim();  }/** * 十六进制字符串转换成 ASCII字符串* @param str String Byte字符串* @return String 对应的字符串*/  public static String hexStr2Str(String hexStr){  hexStr = hexStr.toString().trim().replace(" ", "").toUpperCase(Locale.US);char[] hexs = hexStr.toCharArray();  byte[] bytes = new byte[hexStr.length() / 2];  int iTmp = 0x00;;  for (int i = 0; i < bytes.length; i++){  iTmp = mHexStr.indexOf(hexs[2 * i]) << 4;  iTmp |= mHexStr.indexOf(hexs[2 * i + 1]);  bytes[i] = (byte) (iTmp & 0xFF);  }  return new String(bytes);  }/*** bytes转换成十六进制字符串* @param b byte[] byte数组* @param iLen int 取前N位处理 N=iLen* @return String 每个Byte值之间空格分隔*/public static String byte2HexStr(byte[] b, int iLen){StringBuilder sb = new StringBuilder();for (int n=0; n<iLen; n++){sb.append(mChars[(b[n] & 0xFF) >> 4]);sb.append(mChars[b[n] & 0x0F]);sb.append(' ');}return sb.toString().trim().toUpperCase(Locale.US);}/*** bytes字符串转换为Byte值* @param src String Byte字符串,每个Byte之间没有分隔符(字符范围:0-9 A-F)* @return byte[]*/public static byte[] hexStr2Bytes(String src){/*对输入值进行规范化整理*/src = src.trim().replace(" ", "").toUpperCase(Locale.US);//处理值初始化int m=0,n=0;int iLen=src.length()/2; //计算长度byte[] ret = new byte[iLen]; //分配存储空间for (int i = 0; i < iLen; i++){m=i*2+1;n=m+1;ret[i] = (byte)(Integer.decode("0x"+ src.substring(i*2, m) + src.substring(m,n)) & 0xFF);}return ret;}/*** String的字符串转换成unicode的String* @param strText String 全角字符串* @return String 每个unicode之间无分隔符* @throws Exception*/public static String strToUnicode(String strText)throws Exception{char c;StringBuilder str = new StringBuilder();int intAsc;String strHex;for (int i = 0; i < strText.length(); i++){c = strText.charAt(i);intAsc = (int) c;strHex = Integer.toHexString(intAsc);if (intAsc > 128)str.append("\\u");else // 低位在前面补00str.append("\\u00");str.append(strHex);}return str.toString();}/*** unicode的String转换成String的字符串* @param hex String 16进制值字符串 (一个unicode为2byte)* @return String 全角字符串* @see CHexConver.unicodeToString("\\u0068\\u0065\\u006c\\u006c\\u006f")*/public static String unicodeToString(String hex){int t = hex.length() / 6;int iTmp = 0;StringBuilder str = new StringBuilder();for (int i = 0; i < t; i++){String s = hex.substring(i * 6, (i + 1) * 6);// 将16进制的string转为intiTmp = (Integer.valueOf(s.substring(2, 4), 16) << 8) | Integer.valueOf(s.substring(4), 16);// 将int转换为字符str.append(new String(Character.toChars(iTmp)));}return str.toString();}
}

转载于:https://www.cnblogs.com/Bonker/p/5417594.html

Java Hex 16进制的 byte String 转换类相关推荐

  1. 16进制与byte的转换

    新添加两种方式: private static final char[] HEX_CHAR = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ' ...

  2. Java将16进制字符串,转换成字符串

    Java将16进制字符串,转换成字符串 前段时间遇到同事给了我一串16进制的字符串,让我把它给转成正常的字符串. 16进制字符串: c8:ed:cc:bd:d5:eb 转换后正常的字符串: 软探针 解 ...

  3. java的16进制与10进制互相转换

    今天遇到了进制转换的有趣问题,记录下来. 1,首先,10进制转16进制,大家应该都比较熟: Integer x = 666; String hex = x.toHexString(x); System ...

  4. 16进制和byte[]转换工具类

    package com.lyn.utils_library;/*** 16进制和byte[]转换工具类** @author longyn* @version 1.0.0*/ public class ...

  5. java将16进制与10进制互相转换

    今天遇到了进制转换的有趣问题,记录下来. 1,首先,10进制转16进制,大家应该都比较熟: Integer x = 666; String hex = x.toHexString(x); System ...

  6. 16进制字符串转string

    当字符串中有'\0'时无法通过tcp将内容发送的客户端,因此需要将原始字符串转换为16进制表示的形式然后进行发送,发送后要对16进制的字符串进行转换,以下代码就是解决16进制转string的. #in ...

  7. 物联网中常用的方法,16进制二进制之间的转换

    由于最近公司做的是关于物联网的项目,所以经常用到进制转换的功能,所以自己写了一些并且收集了一些方法,供大家使用 import java.text.SimpleDateFormat; import ja ...

  8. php 字符串转化为16进制,php将字符串转换成16进制的方法

    php将字符串转换成16进制的方法 本文实例讲述了php将字符串转换成16进制的方法.分享给大家供大家参考.具体分析如下: php中可以通过bin2hex函数将字符串转换成16进制的形式输出,bin2 ...

  9. Java中byte与16进制字符串的互相转换

    https://www.cnblogs.com/qinwangchen/p/5418028.html * Convert byte[] to hex string.这里我们可以将byte转换成int, ...

  10. java 字节 16进制_Java字节数组和16进制字符串的互相转化

    背景基础知识: 1.1. "字符"是由数字来表示的 先来重新了解一下计算机是如何处理"字符"的,这个原理是大家必须记住的,特别是在用JAVA写程序的时候,万万不 ...

最新文章

  1. python面向对象图片_Python面向对象-概念、类、实例
  2. [POJ] 3687 Labeling Balls(拓扑排序)
  3. java控制台计算数字_java从控制台接收一个数字
  4. Concept3D推出交互式3D地图平台
  5. 孪生神经网络--一个简单神奇的结构
  6. es搜索准实时的理解
  7. dotnet core 文档链接
  8. 笔记本电脑怎么清理灰尘_笔记本电脑卡顿,运行慢,似中病毒,看这里 小白教你轻松搞定...
  9. app通用功能测试用例
  10. .NET架构设计、框架设计系列文章总结
  11. WPS_Word空白页删除
  12. 如何在Ubuntu上使用Canonical的Livepatch服务
  13. 内存溢出常见原因及解决方法
  14. Cisco VPP IKEV2 配置说明
  15. 黑鲨怎么修改服务器,黑鲨自定义安装系统教程图解
  16. 2023京东年货节全民炸年兽活动最详细规则
  17. 公司新来了个00后测试工程师,一副毛头小子的样儿,哪想到是新一代卷王...
  18. 头指针,头结点,首元结点的区别,头结点的优点
  19. vm fusion Linux系统克隆
  20. 敏捷考证?你应该知道的敏捷体系认证名单(最全整理)

热门文章

  1. 关于项目中解决bug的心得
  2. 2017年上半年软件设计师试题-04
  3. MySQL集群(四)之keepalived实现mysql双主高可用
  4. 重新认识java-break和continue的标签你用过么
  5. mysql 5.7.15发布
  6. Spring中的设计模式学习
  7. 如何为新的应用获取更高的关键字排名
  8. linux 基础练习题、面试题(二)
  9. _beginThreadex创建多线程解读
  10. 对break和continue的一些个人认知(称不上见解)