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

java 字节数组与16进制转换

 
阅读更多
public class HexCodec {

	static final char[] HEX = new char[]{ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };

	public static String hexEncode(byte[] buffer) {
		if (buffer.length == 0) {
			return "";
		}
		int holder = 0;
		char[] chars = new char[buffer.length * 2];
		for (int i = 0; i < buffer.length; i++) {
			holder = (buffer[i] & 0xf0) >> 4;
			chars[i * 2] = HEX[holder];
			holder = buffer[i] & 0x0f;
			chars[(i * 2) + 1] = HEX[holder];
		}
		return new String(chars);
	}

	public static byte[] hexDecode(String hex) {
		//A null string returns an empty array
		if (hex == null || hex.length() == 0) {
			return new byte[0];
		} else if (hex.length() < 3) {
			return new byte[]{ (byte)(Integer.parseInt(hex, 16) & 0xff) };
		}
		//Adjust accordingly for odd-length strings
		int count = hex.length();
		int nibble = 0;
		if (count % 2 != 0) {
			count++;
			nibble = 1;
		}
		byte[] buf = new byte[count / 2];
		char c = 0;
		int holder = 0;
		int pos = 0;
		for (int i = 0; i < buf.length; i++) {
		    for (int z = 0; z < 2 && pos<hex.length(); z++) {
		        c = hex.charAt(pos++);
		        if (c >= 'A' && c <= 'F') {
		            c -= 55;
		        } else if (c >= '0' && c <= '9') {
		            c -= 48;
		        } else if (c >= 'a' && c <= 'f') {
		            c -= 87;
		        }
		        if (nibble == 0) {
		            holder = c << 4;
		        } else {
		            holder |= c;
		            buf[i] = (byte)holder;
		        }
		        nibble = 1 - nibble;
		    }
		}
		return buf;
	}

}


分享到:
评论

相关推荐

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

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

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

    1. **二进制与十六进制转换** - 二进制是一种基于2的计数系统,只包含两个数字:0和1。 - 十六进制是一种基于16的计数系统,由0-9的阿拉伯数字和A-F的字母(代表10-15)组成。 - 在Java中,可以使用`Integer....

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

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

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

    在IT行业中,数据的存储和处理常常涉及到不同的进制转换,比如从十进制到二进制,或者从十六进制到字节数组。在Java编程中,将十六进制位串转化为byte数组是一项常见的操作,特别是在处理二进制数据、网络通信或者...

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

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

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

    /** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 * @return byte[] 字节数组 */ public static byte[] hexStringToByteArray(String hexString) { hexString = hexString.replaceAll...

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

    Java实现的进制转换工具类完整示例 Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制...

    java-16进制4字节转Float

    在Java编程语言中,将16进制的4字节数据转换为浮点数是常见的数据处理操作,尤其是在与硬件设备交互或者进行低级通信时。这个过程涉及到字节顺序的理解,以及Java中的数据类型转换。以下是关于这个主题的详细解释。 ...

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

    它遍历输入的字节数组,将每个字节与0xFF进行位与操作以确保只取低8位,然后使用`Integer.toHexString()`将结果转换为16进制字符串。如果生成的16进制字符串长度为1(表示该字节的低4位为0),则在其前面添加一个'0'...

    关于在Idea调试的时候如何显示16进制的处理.doc

    1. 右击字节数组,然后选择“View as”,再选择“Create”添加对 byte[]的处理。 2. 给个名称,并给个表达式,处理表达式如下: ```java int len = this.length; StringBuilder sb = new StringBuilder(len * 2); ...

    通过java编程得到.jpg图片16进制的数据

    3. **字节与16进制转换**:Java中的`Integer.toHexString()`方法是将一个整数转换为16进制字符串的关键。由于图片文件由字节组成,我们需要先读取这些字节,然后逐个转换成16进制。 4. **位操作**:如果需要读取....

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

    Java 16进制与字符串的转换 Java 中的 16 进制与字符串之间的转换是非常重要的一种操作,特别是在数据存储和网络传输时。本文将详细介绍 Java 中的 16 进制与字符串的相互转换函数分类。 将 byte 数组以 16 进制的...

    netty服务器解析16进制数据

    当接收到16进制字符串时,需要将其转换为字节数组。这可以通过将每个16进制字符转换为对应的二进制值,然后组合成字节完成。Netty 不直接提供这样的转换函数,但可以借助 Java 核心库,如 `Integer.parseInt(hex...

    java网络编程,UDP,发送16进制报文。

    上述代码中,`DatatypeConverter.parseHexBinary()`方法用于将16进制字符串转换为字节数组,然后创建一个`DatagramPacket`实例,包含数据和目标服务器的IP地址与端口。最后,通过`DatagramSocket`发送这个数据包。 ...

    16进制数据转换

    ### IT知识点:Java中16进制数据与字符串(含中文)的相互转换 #### 核心概念 在计算机科学中,十六进制(Hexadecimal)是一种常用的数值表示方法,通常用于表示二进制数据,因为十六进制的每一位可以表示四位二...

    16进制转文件.zip

    4. **具体实现过程**:在Java中,可以使用`Integer.parseInt(hexChar, 16)`将16进制字符转换为整数,然后通过位运算(如左移和按位与)将其转换为字节。对于字符串,可以使用循环遍历并处理每个字符。最后,使用`...

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

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

    android字符串和16进制转换

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

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

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

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

    在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行相互转换的情况。这些转换在处理网络通信、文件存储、加密解密等领域尤为关键。下面我们...

Global site tag (gtag.js) - Google Analytics