最简单的方法:
利用javax.xml.bind包下的DatatypeConverter
public static java.lang.String printHexBinary(byte[]val)
Converts an array of bytes into a string.
Parameters:
val
- An array of bytes
Returns:
A string containing a lexical representation of xsd:hexBinary
Throws:
IllegalArgumentException
- ifvalis null.
import javax.xml.bind.DatatypeConverter;
import java.io.UnsupportedEncodingException;
public class test {
public static void main(String[] args) throws UnsupportedEncodingException{
//print hex string version of HELLO WORLD
byte[] helloBytes = "HELLO WORLD".getBytes();
String helloHex = DatatypeConverter.printHexBinary(helloBytes);
System.out.printf("Hello hex: 0x%s\n", helloHex);
//convert hex-encoded string back to original string
byte[] decodedHex = DatatypeConverter.parseHexBinary(helloHex);
String decodedString = new String(decodedHex, "UTF-8");
System.out.printf("Hello decoded : %s\n", decodedString);
}
}
或者使用
stackoverflow提供的方法,貌似最快
final protected static char[] hexArray = "0123456789ABCDEF".toCharArray();
public static String bytesToHex(byte[] bytes) {
char[] hexChars = new char[bytes.length * 2];
for ( int j = 0; j < bytes.length; j++ ) {
int v = bytes[j] & 0xFF;
hexChars[j * 2] = hexArray[v >>> 4];
hexChars[j * 2 + 1] = hexArray[v & 0x0F];
}
return new String(hexChars);
}
又或者使用java源码:
D:\JAVA\jdk1.8.0_65\src\javax\xml\bind\DatatypeConverterImpl.java
private static final char[] hexCode = "0123456789ABCDEF".toCharArray();
public String printHexBinary(byte[] data) {
StringBuilder r = new StringBuilder(data.length * 2);
for (byte b : data) {
r.append(hexCode[(b >> 4) & 0xF]);
r.append(hexCode[(b & 0xF)]);
}
return r.toString();
}
分享到:
相关推荐
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
这个类可能包含一个静态方法,接受一个十六进制字符串作为参数,然后按照上述步骤进行转换,并返回byte数组。在实际开发中,这样的工具类可以大大简化代码,提高可读性和可维护性。 在处理十六进制字符串转字节数组...
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
在Java编程中,将字节数组转换为16进制字符串是一项常见的任务,尤其是在处理二进制数据、网络通信或者存储数据时。16进制(Hexadecimal)是一种数字表示方式,它使用16个符号(0-9和A-F)来表示数值,对于显示和...
Java 二进制数据与 16 进制字符串相互转换方法 Java 中,二进制数据和 16 进制字符串是两种常见的数据表示形式,在实际编程过程中,我们经常需要将这两种格式相互转换。本文将详细介绍 Java 中二进制数据与 16 进制...
3. 将字节数组转换为十六进制字符串:`public static String encodeHexStr(byte[] data)` 该方法将字节数组转换为十六进制字符串。该方法可以将字节数组转换为小写或大写的十六进制字符串,可以根据需要选择。 4. ...
在这里,`String.format()`和`BigInteger`用于将字符串转换为16进制,而`Base64.getDecoder().decode()`则用于将16进制字符串解码回原始的字节数组,再转化为字符串。 在实际应用中,你可能还会遇到其他复杂情况,...
另一个代码片段来自`NumberChange`类,它提供了`hexStringToByte`和`bytesToHexString`方法,分别用于将16进制字符串转换为字节数组和将字节数组转换为16进制字符串。这两个方法同样考虑了中文字符的多字节特性,但...
`CharterConverter.java`可能包含将字符数据转换为字节数组以及将CRC16校验和转化为可读字符串的方法,以便于输出和展示。 实现CRC16校验时,通常会遵循以下步骤: 1. 初始化CRC寄存器:设置为生成多项式的最高位...
3. 转化为16进制字符串: 将字节数组转换为16进制字符串是为了方便人类阅读或进行特定的编码操作。每个字节可以通过循环遍历并使用`Integer.toHexString()`方法转换为对应的16进制值。例如,Python的`hexlify()`...
从给定的代码片段来看,这实际上是一段C++代码,而非Java代码,旨在将一个十六进制字符串转换为双精度浮点数(double)。在深入解析这段代码之前,我们首先来了解一下Java中如何实现16位内存数据转化为double型。 #...
十六进制字符串转换为byte数组 char转换为byte数组 16进制转化为数字 ytes数组转16进制String byte数组转换为十六进制字符串 int转换为byte数组 byte数组转换为int 保留几位小数 null转String String转Byte String转...
在Java和Android中,将字节数组转换为字符串最常用的方法是使用`new String(byte[])`构造函数。此方法会使用平台默认的字符编码,这可能会导致在不同系统上显示不同的结果。为了避免这个问题,我们通常指定一个明确...
MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的输出,通常是32位的16进制字符串。在Java中,MD5常用于数据的校验、密码存储以及创建唯一标识等场景。本篇文章...
5. 将得到的字节数组转换为16进制字符串。因为每个字节是8位,所以需要两位十六进制表示,可以使用`StringBuilder`和`Integer.toHexString()`来完成: ```java StringBuilder hexString = new StringBuilder(); ...
其中`toHexString`函数用于将字节数组转化为16进制字符串。 5. 高级算法和绝对值:在描述中提到的“高级算法”和“绝对值”可能是指在计算MD5的基础上进行的其他操作。例如,可以对多个哈希值进行串联,或者对哈希...
哈希值通常是以16进制形式展示,所以我们需要将字节数组转化为16进制字符串。 ```java StringBuilder hexString = new StringBuilder(); for (byte b : hashBytes) { String hex = Integer.toHexString(0xFF & b)...
因为我们通常以16进制的形式展示MD5值,所以需要将得到的字节数组转换成16进制字符串。 ```java StringBuilder hexString = new StringBuilder(); for (byte b : messageDigest) { String hex = Integer....
在这个示例中,`MessageDigest.getInstance("MD5")`获取MD5实例,然后调用`digest()`方法对输入字符串进行哈希计算,得到的字节数组再转换为16进制字符串。 需要注意的是,MD5由于其安全性问题,已经不再适用于密码...