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

Python017

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

1、写转换函数是必须的,目前Jdk中无现有类。

2、在不同的字符编码当中,汉字的对应的数值或者说编码值不一样,像GBK、Unicode肯定是不一样的。以Java默认的Unicode为例说明问题。

3、 一,得到字符串,

二,遍历每个字符,用char来接收,实为int值,或直接用int也可以。

三,Integer.toHexString(每个字符对应的int值)

四,前缀加个“0x”就可以了。

4、如果是其它类型的话,找到对应的字符和数值对应表就可以了。

不知可否解决问题了。

思路:用一个初始化为0~9~a~f的字符串数组,也就是一个十六进制对应表,用这个对应表即可算出一个十六进制字符串的数值。

方法如下:

public static String str2HexStr(String str) {

char[] chars = "0123456789ABCDEF".toCharArray()

StringBuilder sb = new StringBuilder("")

byte[] bs = str.getBytes()

int bit

for (int i = 0i <bs.lengthi++) {

bit = (bs[i] &0x0f0) >>4

sb.append(chars[bit])

bit = bs[i] &0x0f //位于运算

sb.append(chars[bit]) //进行字符串的拼接

}

return sb.toString()

}

调用方法如下:

String str = str2HexStr("asbd")