package cn.com.util;
/**
* String、byte[]、十六进制之间的转换
*
* @author will
* @creation 2013-1-5
*/
public class HexConvert {
/**
* String转十六进制
*
* @param src
* @return
*/
public static String string2Hex(String src) {
return bytesToHexString(src.getBytes());
}
/**
* 十六进制转String
*
* @param hexString
* @return
*/
public static String hex2String(String hexString) {
byte[] b = hexStringToBytes(hexString);
return new String(b);
}
/**
* byte[]转换成String
*
* @param src
* @return
*/
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();
}
/**
* 十六进制转换成byte[]
*
* @param hexString
* @return
*/
public static 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;
}
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
//汉字转换成十六进制为6位
//其他字符换成十六进制为2位
public static void main(String[] args) {
String s = "12345678901234567890";
System.out.println("元字符:" + s);
String hex = string2Hex(s);
System.out.println("->十六:" + hex);
System.out.println("->十六:" + hex.length());
System.out.println("->还原:" + hex2String(hex));
// long l = Long.decode(s);
// System.out.println("->十六:"+l);
// System.out.println("还 原:"+Long.toHexString(l));
}
}
/**
* String、byte[]、十六进制之间的转换
*
* @author will
* @creation 2013-1-5
*/
public class HexConvert {
/**
* String转十六进制
*
* @param src
* @return
*/
public static String string2Hex(String src) {
return bytesToHexString(src.getBytes());
}
/**
* 十六进制转String
*
* @param hexString
* @return
*/
public static String hex2String(String hexString) {
byte[] b = hexStringToBytes(hexString);
return new String(b);
}
/**
* byte[]转换成String
*
* @param src
* @return
*/
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();
}
/**
* 十六进制转换成byte[]
*
* @param hexString
* @return
*/
public static 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;
}
private static byte charToByte(char c) {
return (byte) "0123456789ABCDEF".indexOf(c);
}
//汉字转换成十六进制为6位
//其他字符换成十六进制为2位
public static void main(String[] args) {
String s = "12345678901234567890";
System.out.println("元字符:" + s);
String hex = string2Hex(s);
System.out.println("->十六:" + hex);
System.out.println("->十六:" + hex.length());
System.out.println("->还原:" + hex2String(hex));
// long l = Long.decode(s);
// System.out.println("->十六:"+l);
// System.out.println("还 原:"+Long.toHexString(l));
}
}