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

Python010

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语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

public static void main(String[] args) {\x0d\x0a // TODO Auto-generated method stub\x0d\x0a String s = "123abc中国 "\x0d\x0a try {\x0d\x0a byte[] b = s.getBytes()\x0d\x0a String str = " "\x0d\x0a for (int i = 0i 2)\x0d\x0a strTmp = strTmp.substring(strTmp.length() - 2)\x0d\x0astr = str + strTmp\x0d\x0a }\x0d\x0a System.out.println(str.toUpperCase())\x0d\x0a } catch (Exception e) {\x0d\x0a e.printStackTrace()\x0d\x0a }\x0d\x0a }

用除商取余法

用十进制数除以16 记录下商和余数

然后继续用商去除以16记录下商和余数,直到商为0

最后将余数逆序排列就可以了

比如十进制数33转为十六进制

33/16=2余1

2/16=0 余2

结果就是0x 21(十六进制以0x开头)