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"); } } }
相关推荐
字节数组是Java和Android中用于存储和处理二进制数据的数据结构,而十六进制字符串则是用十六进制数字(0-9和A-F)表示每个字节的值。一个字节由8位组成,可以表示0到255之间的数值,而十六进制字符串则是每四位二...
在处理十六进制字符串转字节数组时,还需要注意大小端的问题。在某些系统中,数据的存储顺序有大端(高位字节在前)和小端(低位字节在前)之分,这在处理网络传输或者跨平台的数据交换时尤为重要。 总之,将十六...
本篇将详细阐述如何在Java中进行二进制、十进制和十六进制之间的转换,以及字节数组与十六进制字符串的相互转换。 一、进制转换 1. **二进制转十进制**:Java中可以使用`Integer.parseInt()`或`Long.parseLong()`...
首先,它将输入的十六进制字符串转换为字节数组,然后使用这些字节尝试以UTF-8、UTF-16(与Unicode相同)、UTF-16LE(小端字节序)、UTF-16BE(大端字节序)、UTF-32以及各自的LE和BE版本进行解码。`str2all`方法则...
- 示例中的`hexStringToByte()`方法将十六进制字符串转换为字节数组,而`bytesToHexString()`则将字节数组转换为十六进制字符串。 2. **字节数组** - 字节数组在Java中用`byte[]`表示,它可以存储任意字节值,常...
/** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 *... i += 2) { // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节 bytes[i / 2] = (byte) ((Character.digit(hexS
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
3. 将字节数组转换为十六进制字符串:`public static String encodeHexStr(byte[] data)` 该方法将字节数组转换为十六进制字符串。该方法可以将字节数组转换为小写或大写的十六进制字符串,可以根据需要选择。 4. ...
在 Java 中,我们可以使用 `Bytes2HexString` 函数将 byte 数组转换为 16 进制字符串。该函数接受一个参数 b,即 byte 数组,然后将其转换为 16 进制字符串。 ```java public static String Bytes2HexString(byte[]...
- `Integer.toHexString()`和`Integer.parseInt(hexStr, 16)`是十六进制字符串与整数之间转换的常用方法。 4. **字符编码与解码**: Java中的`Character`类提供了处理单个字符的方法。例如,可以使用`Character....
2. **十六进制转二进制**:接着调用 `HexStringToBinary` 方法将十六进制字符串转换回字节数组,并再次转换为字符串打印出来,验证转换的正确性。 3. **转换方法实现**:`BinaryToHexString` 和 `HexStringToBinary`...
二进制数组转换为二进制字符串 将二进制数组转换为十六进制字符串 将十六进制转换为二进制字节数组 将十六进制转换为二进制字符串
总结来说,将十六进制字符串转换为byte数组是编程中常见的操作,涉及到的主要知识点包括字符串处理、二进制数据操作以及对不同编程语言的API理解。在实际应用中,我们需要根据具体需求选择合适的方法和工具,以确保...
1. 字节数组转十六进制字符串: 遍历字节数组,将每个字节转换为其对应的十六进制字符,并拼接成字符串。例如: ```java public static String bytesToHex(byte[] bytes) { StringBuilder sb = new ...
这个过程通常涉及到将十六进制字符串解析成字节数组,然后将这些字节用作像素值来创建图像。以下是一个详细的步骤说明和相关知识点: 1. **十六进制数解析**: - 在Java中,我们可以使用`Integer.parseInt(hex...
Java 中,二进制数据和 16 进制字符串是两种常见的数据表示形式,在实际编程过程中,我们经常需要将这两种格式相互转换。本文将详细介绍 Java 中二进制数据与 16 进制字符串相互转换的方法。 二进制数据 在 Java ...
以下是一个简单的Java方法,用于将字节数组转换为十六进制字符串: ```java public static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append...
- 将16进制字符串转换为字节数组,每个字节对应一个16进制字符。 - 根据字节序调整字节数组的顺序。 - 使用`Float.intBitsToFloat()`方法将字节数组转换为整数,然后将这个整数转换为浮点数。这是因为浮点数在...
2. **16进制转文件的原理**:将16进制字符串转换为文件,通常需要解析这些字符串,将每个16进制字符转换为其对应的二进制值,然后将这些二进制值组合成完整的字节序列。这个字节序列可以代表任何类型的数据,如文本...
从给定的代码片段来看,这实际上是一段C++代码,而非Java代码,旨在将一个十六进制字符串转换为双精度浮点数(double)。在深入解析这段代码之前,我们首先来了解一下Java中如何实现16位内存数据转化为double型。 #...