`
lgh1992314
  • 浏览: 315674 次
文章分类
社区版块
存档分类
最新评论

JAVA byte数组转化为16进制字符串输出

 
阅读更多

最简单的方法:

利用javax.xml.bind包下的DatatypeConverter

printHexBinary

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字节数组转换十六进制字符串

    在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...

    把十六进制的位串转化为byte数组

    这个类可能包含一个静态方法,接受一个十六进制字符串作为参数,然后按照上述步骤进行转换,并返回byte数组。在实际开发中,这样的工具类可以大大简化代码,提高可读性和可维护性。 在处理十六进制字符串转字节数组...

    java二进制,字节数组,字符,十六进制,BCD编码转换

    /* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */

    byte数组转化为hex

    在Java编程中,将字节数组转换为16进制字符串是一项常见的任务,尤其是在处理二进制数据、网络通信或者存储数据时。16进制(Hexadecimal)是一种数字表示方式,它使用16个符号(0-9和A-F)来表示数值,对于显示和...

    java 二进制数据与16进制字符串相互转化方法

    Java 二进制数据与 16 进制字符串相互转换方法 Java 中,二进制数据和 16 进制字符串是两种常见的数据表示形式,在实际编程过程中,我们经常需要将这两种格式相互转换。本文将详细介绍 Java 中二进制数据与 16 进制...

    Java实现的进制转换工具类完整示例

    3. 将字节数组转换为十六进制字符串:`public static String encodeHexStr(byte[] data)` 该方法将字节数组转换为十六进制字符串。该方法可以将字节数组转换为小写或大写的十六进制字符串,可以根据需要选择。 4. ...

    android字符串和16进制转换

    在这里,`String.format()`和`BigInteger`用于将字符串转换为16进制,而`Base64.getDecoder().decode()`则用于将16进制字符串解码回原始的字节数组,再转化为字符串。 在实际应用中,你可能还会遇到其他复杂情况,...

    Android字符串和十六进制相互转化出现的中文乱码问题

    另一个代码片段来自`NumberChange`类,它提供了`hexStringToByte`和`bytesToHexString`方法,分别用于将16进制字符串转换为字节数组和将字节数组转换为16进制字符串。这两个方法同样考虑了中文字符的多字节特性,但...

    java实现CRC16校验功能

    `CharterConverter.java`可能包含将字符数据转换为字节数组以及将CRC16校验和转化为可读字符串的方法,以便于输出和展示。 实现CRC16校验时,通常会遵循以下步骤: 1. 初始化CRC寄存器:设置为生成多项式的最高位...

    打开,保存,转化图片

    3. 转化为16进制字符串: 将字节数组转换为16进制字符串是为了方便人类阅读或进行特定的编码操作。每个字节可以通过循环遍历并使用`Integer.toHexString()`方法转换为对应的16进制值。例如,Python的`hexlify()`...

    java-16位内存数据转化为double型

    从给定的代码片段来看,这实际上是一段C++代码,而非Java代码,旨在将一个十六进制字符串转换为双精度浮点数(double)。在深入解析这段代码之前,我们首先来了解一下Java中如何实现16位内存数据转化为double型。 #...

    java_android_类型转换工具类的标准代码

    十六进制字符串转换为byte数组 char转换为byte数组 16进制转化为数字 ytes数组转16进制String byte数组转换为十六进制字符串 int转换为byte数组 byte数组转换为int 保留几位小数 null转String String转Byte String转...

    Android byte[] 和 String互相转换

    在Java和Android中,将字节数组转换为字符串最常用的方法是使用`new String(byte[])`构造函数。此方法会使用平台默认的字符编码,这可能会导致在不同系统上显示不同的结果。为了避免这个问题,我们通常指定一个明确...

    Md5加密java

    MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它能够将任意长度的数据转化为固定长度的输出,通常是32位的16进制字符串。在Java中,MD5常用于数据的校验、密码存储以及创建唯一标识等场景。本篇文章...

    MD5-java版

    5. 将得到的字节数组转换为16进制字符串。因为每个字节是8位,所以需要两位十六进制表示,可以使用`StringBuilder`和`Integer.toHexString()`来完成: ```java StringBuilder hexString = new StringBuilder(); ...

    MD5 jar包+使用示例(含源代码)

    其中`toHexString`函数用于将字节数组转化为16进制字符串。 5. 高级算法和绝对值:在描述中提到的“高级算法”和“绝对值”可能是指在计算MD5的基础上进行的其他操作。例如,可以对多个哈希值进行串联,或者对哈希...

    用java语言编写的MD5加密

    哈希值通常是以16进制形式展示,所以我们需要将字节数组转化为16进制字符串。 ```java StringBuilder hexString = new StringBuilder(); for (byte b : hashBytes) { String hex = Integer.toHexString(0xFF & b)...

    java MD5机密实例 例子

    因为我们通常以16进制的形式展示MD5值,所以需要将得到的字节数组转换成16进制字符串。 ```java StringBuilder hexString = new StringBuilder(); for (byte b : messageDigest) { String hex = Integer....

    md5加密实现对字符串进行简单加密

    在这个示例中,`MessageDigest.getInstance("MD5")`获取MD5实例,然后调用`digest()`方法对输入字符串进行哈希计算,得到的字节数组再转换为16进制字符串。 需要注意的是,MD5由于其安全性问题,已经不再适用于密码...

Global site tag (gtag.js) - Google Analytics