`
zdsyouxiang
  • 浏览: 25927 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java十六进制字符串和字节数组互转

    博客分类:
  • java
阅读更多
public class HexUtil {
	/*
	 * 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 = 0; i < src.length; i++) {
			int v = src[i] & 0xFF;
			String hv = Integer.toHexString(v);
			if (hv.length() < 2) {
				stringBuilder.append(0);
			}
			stringBuilder.append(hv);
		}
		return stringBuilder.toString().toUpperCase();
	}
	/**
	 * Convert hex string to byte[]
	 * 
	 * @param hexString
	 *            the hex string
	 * @return byte[]
	 */
	public static byte[] hexStringToBytes(String hexStr) {
		int index = 0;
		if (hexStr == null || hexStr.equals("")) {
			return null;
		}
		if (hexStr.startsWith("0x", index) || hexStr.startsWith("0X", index)) {
			index += 2;
		}
		hexStr = hexStr.substring(index).toUpperCase();
		int length = hexStr.length() / 2;
		char[] hexChars = hexStr.toCharArray();
		byte[] d = new byte[length];
		for (int i = 0; i < length; i++) {
			int pos = i * 2;
			d[i] = (byte) (charToByte(hexChars[pos]) << 4 | charToByte(hexChars[pos + 1]));
		}
		return d;
	}
	/**
	 * Convert char to byte
	 * @param c
	 * char
	 * @return byte
	 */
	private static byte charToByte(char c) {
		byte b = (byte) "0123456789ABCDEF".indexOf(c);
		return b;
	}

	// 将指定byte数组以16进制的形式打印到控制台
	public static void printHexString(byte[] b) {
		for (int i = 0; i < b.length; i++) {
			String hex = Integer.toHexString(b[i] & 0xFF);
			if (hex.length() == 1) {
				hex = '0' + hex;
			}
			System.out.print(hex.toUpperCase());
		}
	}
	public static String bytes2HexString(byte[] b) {
		String ret = "";
		for (int i = 0; i < b.length; i++) {
			String hex = Integer.toHexString(b[i] & 0xFF);
			if (hex.length() == 1) {
				hex = '0' + hex;
			}
			ret += hex.toUpperCase();
		}
		return ret;
	}
	public static void main(String[] args) {
		String hex = "EFEF";
		byte[] a = hexStringToBytes(hex);
		String b = bytesToHexString(a);
		if(b.equals(hex)){
			System.out.println("ok");
		}else{
			System.out.println("no");
		}
	}
}

 

分享到:
评论

相关推荐

    android byte字节数组转换十六进制字符串

    字节数组是Java和Android中用于存储和处理二进制数据的数据结构,而十六进制字符串则是用十六进制数字(0-9和A-F)表示每个字节的值。一个字节由8位组成,可以表示0到255之间的数值,而十六进制字符串则是每四位二...

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

    在处理十六进制字符串转字节数组时,还需要注意大小端的问题。在某些系统中,数据的存储顺序有大端(高位字节在前)和小端(低位字节在前)之分,这在处理网络传输或者跨平台的数据交换时尤为重要。 总之,将十六...

    java中进制转换(二进制,十进制,十六进制)及字节数组与十六进制的转换

    本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...

    java实现十六进制字符unicode与中英文转换示例

    首先,它将输入的十六进制字符串转换为字节数组,然后使用这些字节尝试以UTF-8、UTF-16(与Unicode相同)、UTF-16LE(小端字节序)、UTF-16BE(大端字节序)、UTF-32以及各自的LE和BE版本进行解码。`str2all`方法则...

    JAVA二进制字节数组字符十六进制BCD编码转换.doc

    - 示例中的`hexStringToByte()`方法将十六进制字符串转换为字节数组,而`bytesToHexString()`则将字节数组转换为十六进制字符串。 2. **字节数组** - 字节数组在Java中用`byte[]`表示,它可以存储任意字节值,常...

    java 16进制表示的字符串转换为字节数组 工具类

    /** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 *... i += 2) { // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节 bytes[i / 2] = (byte) ((Character.digit(hexS

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

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

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

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

    java16进制与字符串的转换.pdf

    在 Java 中,我们可以使用 `Bytes2HexString` 函数将 byte 数组转换为 16 进制字符串。该函数接受一个参数 b,即 byte 数组,然后将其转换为 16 进制字符串。 ```java public static String Bytes2HexString(byte[]...

    java String 与各种进制字符之间的转换

    - `Integer.toHexString()`和`Integer.parseInt(hexStr, 16)`是十六进制字符串与整数之间转换的常用方法。 4. **字符编码与解码**: Java中的`Character`类提供了处理单个字符的方法。例如,可以使用`Character....

    汉字十六进制和二进制转换

    2. **十六进制转二进制**:接着调用 `HexStringToBinary` 方法将十六进制字符串转换回字节数组,并再次转换为字符串打印出来,验证转换的正确性。 3. **转换方法实现**:`BinaryToHexString` 和 `HexStringToBinary`...

    java进制转换工具类

    二进制数组转换为二进制字符串 将二进制数组转换为十六进制字符串 将十六进制转换为二进制字节数组 将十六进制转换为二进制字符串

    将传进来的十六进制表示的字符串转换成byte数组 文件下载

    总结来说,将十六进制字符串转换为byte数组是编程中常见的操作,涉及到的主要知识点包括字符串处理、二进制数据操作以及对不同编程语言的API理解。在实际应用中,我们需要根据具体需求选择合适的方法和工具,以确保...

    String(含Hex)与Byte数组互相转换[代码]

    1. 字节数组转十六进制字符串: 遍历字节数组,将每个字节转换为其对应的十六进制字符,并拼接成字符串。例如: ```java public static String bytesToHex(byte[] bytes) { StringBuilder sb = new ...

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

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

    Java将字节转换为十六进制代码分享

    以下是一个简单的Java方法,用于将字节数组转换为十六进制字符串: ```java public static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append...

    java-16进制4字节转Float

    - 将16进制字符串转换为字节数组,每个字节对应一个16进制字符。 - 根据字节序调整字节数组的顺序。 - 使用`Float.intBitsToFloat()`方法将字节数组转换为整数,然后将这个整数转换为浮点数。这是因为浮点数在...

    16进制转文件.zip

    2. **16进制转文件的原理**:将16进制字符串转换为文件,通常需要解析这些字符串,将每个16进制字符转换为其对应的二进制值,然后将这些二进制值组合成完整的字节序列。这个字节序列可以代表任何类型的数据,如文本...

    java 实现十六进制数转为图片Java源码

    这个过程通常涉及到将十六进制字符串解析成字节数组,然后将这些字节用作像素值来创建图像。以下是一个详细的步骤说明和相关知识点: 1. **十六进制数解析**: - 在Java中,我们可以使用`Integer.parseInt(hex...

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

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

Global site tag (gtag.js) - Google Analytics