String、StringHex和byte[]之间的转换

1. 将普通字符串转换为16进制字符串

/**
* 将普通字符串转换为16进制字符串
* @param str 普通字符串
* @param charset 编码格式,一般传UTF-8
* @return
* @throws UnsupportedEncodingException
*/
public static String str2HexStr(String str,String charset) throws UnsupportedEncodingException {
return Hex.encodeHexString(str.getBytes(charset));
}

2.将16进制字符串转换为普通字符串
/**
* 将16进制字符串转换为普通字符串
* @param hexStr 16进制字符串
* @param charset 编码格式
* @return
* @throws DecoderException
* @throws UnsupportedEncodingException
*/
public static String hexStr2Str(String hexStr,String charset) throws DecoderException, UnsupportedEncodingException {
byte[] bytes = Hex.decodeHex(hexStr);
return new String(bytes,charset);
}
3.16进制字符转数组
/**
* 16进制字符转数组
* @param hex16Str
* @return
*/
public static byte[] conver16HexToByte(String hex16Str){
char[] chars = hex16Str.toCharArray();
byte[] b = new byte[chars.length/2];
for (int i = 0; i < b.length; i++) {
int pos = i * 2;
b[i] = (byte) ("0123456789ABCDEF".indexOf(chars[pos]) << 4 | "0123456789ABCDEF".indexOf(chars[pos+1]));
}
return b;
}

4.数组转16进制字符
/**
* 数组转16进制字符
* @param bytes
* @return
*/
public static String bytesToHex(byte[] bytes){
StringBuffer sb =new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(bytes[i] & 0xFF);
if(hex.length() < 2){
sb.append(0);
}
sb.append(hex);
}
return sb.toString().toUpperCase();
}
posted @   蝴蝶梦南华  阅读(1239)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示