Java Hex 16进制的 byte String 转换类
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;
}
else
return 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 // 低位在前面补00
str.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转为int
iTmp = (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();
}
}
Java Hex 16进制的 byte String 转换类的更多相关文章
- java中 16进制字符串 与普通字符串 与 byte数组 之间的转化
方法依赖commons-codec包 maven的引入方式如下 <dependency> <groupId>commons-codec</groupId> < ...
- java中16进制转换10进制
java中16进制转换10进制 public static void main(String[] args) { String str = "04e1"; String myStr ...
- C#字符串和16进制字符串之间的转换
将字符串编码成 16进制 字符串表示: using System;using System.Collections.Generic;using System.Linq;using System.Tex ...
- Java中byte与16进制字符串的互相转换
* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串. * @param s ...
- [转]Java中byte与16进制字符串的互相转换
Java中byte用二进制表示占用8位,而我们知道16进制的每个字符需要用4位二进制位来表示(23 + 22 + 21 + 20 = 15),所以我们就可以把每个byte转换成两个相应的16进制字符, ...
- java利用16进制来辨别png格式的图片
很多人知道利用.png的字符串结尾可以判断前端传入的图片是否为png格式,但是这只是潜意识的判断!那么如何利用png读写的特殊内容来深意识地判断图片格式呢?最近在做东西的时候遇到了点问题,在加载图片的 ...
- Java中16进制与字符串之间的相互转换
笔者前几日在开服过程中需要将字符串转化成为16进制的字符串,在网上找到了一些方法尝试之后,均发现存在一个问题-->字符串转为16进制后再转回来,英文正常,中文出现乱码 经过考虑决定通过以下方式进 ...
- Java中将16进制字符串转换成汉字
技术交流群:233513714 /** * 将16进制字符串转换成汉字 * @param str * @return */ public static String deUnicode(String ...
- 16进制到byte转换
我们经常会看到这样的语法 (byte) 0xAD 0xAD实际是个16进制,转换成二进制为:10101101,转换成10进制是:173,它是个正数 10101101只是int的简写,int由4个byt ...
随机推荐
- Cordova+jQuery Mobile+Spring REST
Cordova可以方便地建立跨平台的移动应用,使用jQuery Mobile做手机界面,后台使用rest提供数据交互. 首先,使用jQuery Mobile建立一个页面: <!DOCTYPE h ...
- java struts2入门学习实例--将客户端IP地址和访问方式输出到浏览器
实例1:实现客户端IP地址和访问方式输出到浏览器. IpAction.java package com.amos.web.action; import javax.servlet.http.HttpS ...
- vim缩进参考线
编辑缩进嵌套的文件时想找到对应的层级比较困难,写了一个函数,使用cc选项设定一条辅助线,标识到指定的缩进层级.代码如下: ? ReferenceLine 1 2 3 4 5 6 7 8 9 10 11 ...
- IDEA git修改远程仓库地址
方法有三种: 方法1.修改命令 git remote set-url origin <url> 方法2.先删后加 git remote rm origin git remote add o ...
- 配置Hadoop1.2.1
1.从Apache官网上下载1.2.1,地址:http://apache.dataguru.cn/hadoop/common/2.拷贝文件到虚拟机下(vm9下直接拖拽就可以)3.到Hadoop的目录下 ...
- MongoDB资料汇总专题
原文地址:http://bbs.chinaunix.net/thread-3675396-1-1.html 上一篇Redis资料汇总专题很受大家欢迎,这里将MongoDB的系列资料也进行了简单整理.希 ...
- VS2017 IDE开发工具选型、安装和使用
原文地址:https://blog.csdn.net/boonya/article/details/78739500 距离上次使用VS工具已是2年前了,这次准备选择比较新的版本来开发桌面程序了.总的来 ...
- 使用 TensorFlow 的起始步骤
1 学习目标: 学习基本的 TensorFlow 概念 在 TensorFlow 中使用 LinearRegressor 类并基于单个输入特征预测各城市街区的房屋价值中位数 使用均方根误差 (RMSE ...
- GC那些事儿--Android内存优化第一弹
引言 接App优化之内存优化(序), 作为App优化系列中内存优化的一个小部分. 由于内存相关知识比较生涩, 内存优化中使用到的相关工具, 也有很多专有名词. 对Java内存管理, GC, Andro ...
- Android WebView中软键盘会遮挡输入框相关问题
要想实现这样的软键盘出现的时候会自己主动把输入框的布局顶上去的效果,须要设置输入法的属性,有下面两种设置方式: 一.在java代码中设置例如以下: getWindow().setSo ...