方法如下:
/* *
* 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语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
使用这个方法可以传进去的16进制的数字组成的字符串转化为utf-8格式的字符串public static String toStringHex1(String s) {
byte[] baKeyword = new byte[s.length() / 2]
for (int i = 0i <baKeyword.lengthi++) {
try {
baKeyword[i] = (byte) (0xff &Integer.parseInt(s.substring(
i * 2, i * 2 + 2), 16))
} catch (Exception e) {
e.printStackTrace()
}
}
try {
s = new String(baKeyword, "utf-8")// UTF-16le:Not
} catch (Exception e1) {
e1.printStackTrace()
}
return s
}
1、写转换函数是必须的,目前Jdk中无现有类。2、在不同的字符编码当中,汉字的对应的数值或者说编码值不一样,像GBK、Unicode肯定是不一样的。以Java默认的Unicode为例说明问题。
3、 一,得到字符串,
二,遍历每个字符,用char来接收,实为int值,或直接用int也可以。
三,Integer.toHexString(每个字符对应的int值)
四,前缀加个“0x”就可以了。
4、如果是其它类型的话,找到对应的字符和数值对应表就可以了。
不知可否解决问题了。