Java中byte与16进制字符串的互相转换

Posted 全栈工程师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中byte与16进制字符串的互相转换相关的知识,希望对你有一定的参考价值。

https://www.cnblogs.com/qinwangchen/p/5418028.html

 

* Convert byte[] to hex string.这里我们可以将byte转换成int,然后利用Integer.toHexString(int)来转换成16进制字符串。  
 * @param src byte[] data  
 * @return hex string  
 */     
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();  
}  
/** 
 * Convert hex string to byte[] 
 * @param hexString the hex string 
 * @return byte[] 
 */  
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;  
}  
/** 
 * Convert char to byte 
 * @param c char 
 * @return byte 
 */  
 private byte charToByte(char c) {  
    return (byte) "0123456789ABCDEF".indexOf(c);  
}

java中byte转换int时为何与0xff进行与运算?看原著

 

 

以上是关于Java中byte与16进制字符串的互相转换的主要内容,如果未能解决你的问题,请参考以下文章

Java中byte与16进制字符串的互相转换

Java中byte与16进制字符串的互相转换

go笔记 - 字符串、数字、byte相互转换

进制之间互转

byte[]数组与十六进制字符串与字符串的互相转换 ——转载

java bytesToHexString 解析