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中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...
1. **二进制与十六进制转换** - 二进制是一种基于2的计数系统,只包含两个数字:0和1。 - 十六进制是一种基于16的计数系统,由0-9的阿拉伯数字和A-F的字母(代表10-15)组成。 - 在Java中,可以使用`Integer....
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
在IT行业中,数据的存储和处理常常涉及到不同的进制转换,比如从十进制到二进制,或者从十六进制到字节数组。在Java编程中,将十六进制位串转化为byte数组是一项常见的操作,特别是在处理二进制数据、网络通信或者...
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
/** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 * @return byte[] 字节数组 */ public static byte[] hexStringToByteArray(String hexString) { hexString = hexString.replaceAll...
Java实现的进制转换工具类完整示例 Java实现的进制转换工具类是Java语言中的一种常用工具类,用于实现各种进制之间的转换操作,如二进制、十六进制、字符串、数组等。该工具类主要提供了将字节数组转换为十六进制...
在Java编程语言中,将16进制的4字节数据转换为浮点数是常见的数据处理操作,尤其是在与硬件设备交互或者进行低级通信时。这个过程涉及到字节顺序的理解,以及Java中的数据类型转换。以下是关于这个主题的详细解释。 ...
它遍历输入的字节数组,将每个字节与0xFF进行位与操作以确保只取低8位,然后使用`Integer.toHexString()`将结果转换为16进制字符串。如果生成的16进制字符串长度为1(表示该字节的低4位为0),则在其前面添加一个'0'...
1. 右击字节数组,然后选择“View as”,再选择“Create”添加对 byte[]的处理。 2. 给个名称,并给个表达式,处理表达式如下: ```java int len = this.length; StringBuilder sb = new StringBuilder(len * 2); ...
3. **字节与16进制转换**:Java中的`Integer.toHexString()`方法是将一个整数转换为16进制字符串的关键。由于图片文件由字节组成,我们需要先读取这些字节,然后逐个转换成16进制。 4. **位操作**:如果需要读取....
Java 16进制与字符串的转换 Java 中的 16 进制与字符串之间的转换是非常重要的一种操作,特别是在数据存储和网络传输时。本文将详细介绍 Java 中的 16 进制与字符串的相互转换函数分类。 将 byte 数组以 16 进制的...
当接收到16进制字符串时,需要将其转换为字节数组。这可以通过将每个16进制字符转换为对应的二进制值,然后组合成字节完成。Netty 不直接提供这样的转换函数,但可以借助 Java 核心库,如 `Integer.parseInt(hex...
上述代码中,`DatatypeConverter.parseHexBinary()`方法用于将16进制字符串转换为字节数组,然后创建一个`DatagramPacket`实例,包含数据和目标服务器的IP地址与端口。最后,通过`DatagramSocket`发送这个数据包。 ...
### IT知识点:Java中16进制数据与字符串(含中文)的相互转换 #### 核心概念 在计算机科学中,十六进制(Hexadecimal)是一种常用的数值表示方法,通常用于表示二进制数据,因为十六进制的每一位可以表示四位二...
4. **具体实现过程**:在Java中,可以使用`Integer.parseInt(hexChar, 16)`将16进制字符转换为整数,然后通过位运算(如左移和按位与)将其转换为字节。对于字符串,可以使用循环遍历并处理每个字符。最后,使用`...
Java 二进制数据与 16 进制字符串相互转换方法 Java 中,二进制数据和 16 进制字符串是两种常见的数据表示形式,在实际编程过程中,我们经常需要将这两种格式相互转换。本文将详细介绍 Java 中二进制数据与 16 进制...
在这里,`String.format()`和`BigInteger`用于将字符串转换为16进制,而`Base64.getDecoder().decode()`则用于将16进制字符串解码回原始的字节数组,再转化为字符串。 在实际应用中,你可能还会遇到其他复杂情况,...
以下是一个简单的Java方法,用于将字节数组转换为十六进制字符串: ```java public static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append...
在Java或类似的编程语言中,我们经常会遇到需要将字符串(String)与字节数组(Byte[])以及十六进制表示的字符串(Hex)进行相互转换的情况。这些转换在处理网络通信、文件存储、加密解密等领域尤为关键。下面我们...