java16进制与字符串直接相互转换
java 16进制与字符串直接相互转换
CreationTime--2018年7⽉12⽇09点39分
Author:Marydon
1.16进制转换成字符串
/**
* 16进制直接转换成为字符串
* @explain
* @param hexStr 16进制字符串
* @return String (字符集:UTF-8)
*/
public static String fromHexString(String hexString) throws Exception {
// ⽤于接收转换结果
String result = "";
// 转⼤写
hexString = UpperCase();
// 16进制字符
String hexDigital = "0123456789ABCDEF";
// 将16进制字符串转换成char数组
char[] hexs = CharArray();
// 能被16整除,肯定可以被2整除
byte[] bytes = new byte[hexString.length() / 2];
int n;
for (int i = 0; i < bytes.length; i++) {
n = hexDigital.indexOf(hexs[2 * i]) * 16 + hexDigital.indexOf(hexs[2 * i + 1]);
bytes[i] = (byte) (n & 0xff);
}
// byte[]-->String
result = new String(bytes, "UTF-8");
return result;
2.字符串转换成⼤写的16进制字符串
/**
* 字符串转换成为16进制字符串(⼤写)
* @explain 因为java转义字符串在java中有着特殊的意义,
*    所以当字符串中包含转义字符串,并将其转换成16进制后,16进制再转成String时,会出问题:
*  java会将其当做转义字符串所代表的含义解析出来
* @param str 字符串(去除java转义字符)
* @return 16进制字符串
* @throws Exception
数组转换成字符串*/
public static String toHexString(String str) throws Exception {
// ⽤于接收转换结果
String hexString = "";
/
/ 1.校验是否包含特殊字符内容
// java特殊转义符
// String[] escapeArray = {"\b","\t","\n","\f","\r","\'","\"","\\"};
String[] escapeArray = {"\b","\t","\n","\f","\r"};
// ⽤于校验参数是否包含特殊转义符
boolean flag = false;
// 迭代
for (String esacapeStr : escapeArray) {
// ⼀真则真
if (ains(esacapeStr)) {
flag = true;
break;// 终⽌循环

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。