java中如何将byte[]里面的数据转换成十六进制?

Python012

java中如何将byte[]里面的数据转换成十六进制?,第1张

方法如下:

/* *

* 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 = 0i <src.lengthi++) {

int v = src[i] &0xFF

String hv = Integer.toHexString(v)

if (hv.length() <2) {

stringBuilder.append(0)

}

stringBuilder.append(hv)

}

return stringBuilder.toString()

}

此方法能将byte[]转化成16进制字符串,

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

private static String hexString = "0123456789ABCDEF"public static void main(String[] args) {System.out.println(encode("中文")) System.out.println(decode(encode("中文")))}/* * 将字符串编码成16进制数字,适用于所有字符(包括中文) */public static String encode(String str) {// 根据默认编码获取<a href="https://www.baidu.com/s?wd=%E5%AD%97%E8%8A%82%E6%95%B0%E7%BB%84&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Ydn1D4nWDvuWN9mvRvnWDv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHT4rjR3n101njc4PHnLrHTYPs" target="_blank" class="baidu-highlight">字节数组</a> byte[] bytes = str.getBytes() StringBuilder sb = new StringBuilder(bytes.length * 2) // 将<a href="https://www.baidu.com/s?wd=%E5%AD%97%E8%8A%82%E6%95%B0%E7%BB%84&tn=44039180_cpr&fenlei=mv6quAkxTZn0IZRqIHckPjm4nH00T1Ydn1D4nWDvuWN9mvRvnWDv0ZwV5Hcvrjm3rH6sPfKWUMw85HfYnjn4nH6sgvPsT6KdThsqpZwYTjCEQLGCpyw9Uz4Bmy-bIi4WUvYETgN-TLwGUv3EnHT4rjR3n101njc4PHnLrHTYPs" target="_blank" class="baidu-highlight">字节数组</a>中每个字节拆解成2位16进制整数for (int i = 0i <bytes.lengthi++) {sb.append(hexString.charAt((bytes[i] &0xf0) >>4)) sb.append(hexString.charAt((bytes[i] &0x0f) >>0)) }return sb.toString()} /* * 将16进制数字解码成字符串,适用于所有字符(包括中文) */public static String decode(String bytes) {ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2) // 将每2位16进制整数组装成一个字节for (int i = 0i <bytes.length()i += 2)baos.write((hexString.indexOf(bytes.charAt(i)) <<4 | hexString.indexOf(bytes.charAt(i + 1)))) return new String(baos.toByteArray())}

java中 hex 转换成字符串方法:public class Test {private static String hexString = "0123456789ABCDEFabcdef"public static void main(String[] args) {String msg= "亲,你好"System.out.println(encode(msg))System.out.println(decode(encode(msg)))}public static String encode(String str) {byte[] bytes = str.getBytes()StringBuilder sb = new StringBuilder(bytes.length * 2)//转换hex编码for (byte b : bytes) {sb.append(Integer.toHexString(b + 0x800).substring(1))}str = sb.toString()return str}//把hex编码转换为stringpublic static String decode(String bytes) {bytes = bytes.toUpperCase()ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2)// 将每2位16进制整数组装成一个字节for (int i = 0i <bytes.length()i += 2)baos.write((hexString.indexOf(bytes.charAt(i)) <<4 | hexString.indexOf(bytes.charAt(i + 1))))return new String(baos.toByteArray())}}