概述
java实现字节数组byte[]和十六进制字符串之间的转换
1.字节数组byte[]转换为十六进制字符串,具体代码如下所示:
public class HexUtil {
private static final String HEX_CHARSET = "0123456789ABCDEF";
private static final String BLANK = " ";
/**
* 方法功能:字节数组byte[]转化为十六进制字符串
* @param byte[] b
* @param boolean upperCase 十六进制字符串为大写还是小写
* @param boolean insBlank 十六进制字符串是否用空格隔开
*
* */
public static String byte2Hex(byte[] b, boolean upperCase, boolean insBlank){
if ((b == null) || (b.length == 0)) {
return null;
}
int size = b.length;
StringBuilder sb = new StringBuilder(size * 2);
for (int n = 0; n < size; n++)
{
if ((insBlank) && (n > 0) && (n % 4 == 0)) {
sb.append(" ");
}
if (upperCase) {
sb.append(Integer.toString((b[n] & 0xFF) + 256, 16).substring(1).toUpperCase());
} else {
sb.append(Integer.toString((b[n] & 0xFF) + 256, 16).substring(1));
}
}
return upperCase ? sb.toString() : sb.toString().toLowerCase();
}
public static void main(String[] args) throws UnsupportedEncodingException {
//测试方法byte2Hex(byte[] b, boolean upperCase, boolean insBlank)
byte[] b = "aaaa中国加油,战胜新冠状病毒".getBytes();
System.out.println(byte2Hex(b, true, false));
}
}
2.十六进制字符串转换成字节数组byte[],具体代码如下所示:
public class HexUtil {
private static final String HEX_CHARSET = "0123456789ABCDEF";
private static final String BLANK = " ";
/**
* 方法功能:将十六进制字符串转换为字节数组byte[]。
* @param String hexString
* @return byte[]
* */
public static byte[] Hex2Bytes(String hexString){
byte[] arrB = hexString.getBytes();
int iLen = arrB.length;
byte[] arrOut = new byte[iLen / 2];
String strTmp = null;
for (int i = 0; i < iLen; i += 2)
{
strTmp = new String(arrB, i, 2);
arrOut[(i / 2)] = ((byte)Integer.parseInt(strTmp, 16));
}
return arrOut;
}
public static void main(String[] args) throws UnsupportedEncodingException {
//测试方法Hex2Bytes(String hexString)
String hexString = "61616161E4B8ADE59BBDE58AA0E6B2B9EFBC8CE68898E8839CE696B0E586A0E78AB6E79785E6AF92";
byte[]b = Hex2Bytes(hexString);
System.out.println("字节数组byte[] =n"+Arrays.toString(b));
String str = new String(b,"utf-8");
System.out.println("字节数转换为字符串:n"+str);
}
}
最后
以上就是酷炫蛋挞为你收集整理的java实现字节数组byte[]和十六进制字符串之间的转换的全部内容,希望文章能够帮你解决java实现字节数组byte[]和十六进制字符串之间的转换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复