commons-codec-*.jar里有通用方法
Hex.encodeHex(byte[]) 字节数组转换成16进制字符串 (可转成大写的)
Hex.decodeHex(char[]) 16进制“字符串”转换成字节数组 (支持大写的)
下面的两个是自定义写法,建议用通用方法。
import org.apache.commons.codec.DecoderException; import org.apache.commons.codec.binary.Hex; /** * 字符串工具类 * @author happyqing * @since 2013.11.6 */ public class StringUtil { /** * 字节数组转换成16进制字符串 * @param bytes 字节数组 * @return 16进制字符串 */ public static String hexEncode(byte[] bytes) { if (bytes == null || bytes.length <= 0) { return null; } return new String(Hex.encodeHex(bytes)); //Hex.encodeHex(bytes, false) } /** * 16进制字符串转换成字节数组 * @param hexStr 16进制字符串 * @return 字节数组 */ public static byte[] hexDecode(String hexStr) { if (hexStr == null || "".equals(hexStr)) { return null; } try { char[] cs = hexStr.toCharArray(); return Hex.decodeHex(cs); } catch (DecoderException e) { e.printStackTrace(); } return null; } /** * 字节数组转为16进制字符串 * @param bytes 字节数组 * @return 16进制字符串 */ public static String byteArray2HexString(byte[] bytes) { if (bytes == null || bytes.length <= 0) { return null; } //先把byte[] 转换维char[],再把char[]转换为字符串 char[] chars = new char[bytes.length * 2]; // 每个byte对应两个字符 final char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; for (int i = 0, j = 0; i < bytes.length; i++) { chars[j++] = hexDigits[bytes[i] >> 4 & 0x0f]; // 先存byte的高4位 chars[j++] = hexDigits[bytes[i] & 0x0f]; // 再存byte的低4位 } return new String(chars); } /** * 16进制字符串转字节数组 * @param hexString 16进制字符串 * @return 字节数组 */ public static byte[] hexString2ByteArray(String hexString) { if (hexString == null || "".equals(hexString)) { return null; } //先把字符串转换为char[],再转换为byte[] int length = hexString.length() / 2; char[] hexChars = hexString.toCharArray(); byte[] bytes = new byte[length]; String hexDigits = "0123456789abcdef"; for (int i = 0; i < length; i++) { int pos = i * 2; // 两个字符对应一个byte int h = hexDigits.indexOf(hexChars[pos]) << 4; // 注1 int l = hexDigits.indexOf(hexChars[pos + 1]); // 注2 if (h == -1 || l == -1) { // 非16进制字符 return null; } bytes[i] = (byte) (h | l); } return bytes; } /** * @param args */ public static void main(String[] args) { //String str = "15811111111"; String str = "字节数组转16进制字符串"; String result = null; byte[] bytes = null; long b = System.currentTimeMillis(); for(int i=0; i<10000; i++){ //result = byteArray2HexString(str.getBytes()); //27 result = hexEncode(str.getBytes()); //32 } System.out.println("耗时:"+(System.currentTimeMillis()-b)); System.out.println("result:"+result); long b2 = System.currentTimeMillis(); for(int i=0; i<10000; i++){ //bytes = hexString2ByteArray(result); //32 bytes = hexDecode(result); //16 } System.out.println("耗时:"+(System.currentTimeMillis()-b2)); System.out.println("result:"+new String(bytes)); } }
相关推荐
在Android开发中,有时我们需要将字节数组(byte array)转换为十六进制字符串,以便于数据存储、传输或调试。这是因为字节数组是二进制数据,而十六进制字符串则是一种人类可读的表示方式。下面我们将详细讨论如何...
相反地,要从十六进制字符串还原回原始字符串,需要将十六进制字符串拆分为字节数组,然后解码为字符串: ```csharp public static string HexStringToString(string hex, Encoding encoding) { int length = hex....
java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java 字符串转16进制 16进制转字符串 将两个ASCII字符合成一个字节; java ...
本工具专注于将16进制字符串转换为10进制的byte数组,这在处理如数据库存储、加密解密、网络通信等场景中非常常见。 1. **16进制字符串与10进制byte数组的概念** - **16进制字符串**:由0-9和A-F(或a-f)字符组成...
1. **字节数组转十六进制字符串**:可以使用自定义方法或者`HexUtils`类(参考你的文件名)。例如: ```java byte[] bytes = {1, 2, 3}; String hexString = toHexString(bytes); public static String toHexString...
- 示例中的`hexStringToByte()`方法将十六进制字符串转换为字节数组,而`bytesToHexString()`则将字节数组转换为十六进制字符串。 2. **字节数组** - 字节数组在Java中用`byte[]`表示,它可以存储任意字节值,常...
在处理十六进制字符串转字节数组时,还需要注意大小端的问题。在某些系统中,数据的存储顺序有大端(高位字节在前)和小端(低位字节在前)之分,这在处理网络传输或者跨平台的数据交换时尤为重要。 总之,将十六...
由C代码翻译过来的PHP CRC8算法,内有十六进制转字节数组与字节数组转十六进制,内有十六进制转byte数组与byte数组转十六进制
在 Java 中,我们可以使用 `Bytes2HexString` 函数将 byte 数组转换为 16 进制字符串。该函数接受一个参数 b,即 byte 数组,然后将其转换为 16 进制字符串。 ```java public static String Bytes2HexString(byte[]...
labview 读取的一维数组(整数)转换成16进制的字符串,方便大家进行数据处理。有问题可以留言咨询,互相学习
/** * 16进制表示的字符串转换为字节数组 * @param hexString 16进制表示的字符串 *... i += 2) { // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节 bytes[i / 2] = (byte) ((Character.digit(hexS
4. **字节数组转16进制字符串**: - 可以通过循环遍历数组,对每个字节使用`Format('%02X', [byte])`生成16进制字符串,并连接起来。 5. **串口和SOCKET通讯中的16进制处理**: - 在串口(RS232/RS485)通讯中,...
在上面的代码中,我们首先打开了二进制数据文件,读取了文件的内容,然后使用 for 循环来遍历整个数据,每次将每个字节转换为十六进制字符串,最后将所有十六进制字符串连接起来。 本文展示了如何使用 Lua 实现十六...
字节数组转十六进制字符串(`byteToHexStr`) 此函数用于将字节数组转换为十六进制字符串。它遍历每个字节,将其转换为十六进制表示形式,并拼接成一个新的字符串返回。 ```csharp public static string ...
/* java二进制,字节数组,字符,十六进制,BCD编码转换2007-06-07 00:17/** *//** * 把16进制字符串转换成字节数组 * @param hex * @return */
输入string 输出byte 16进制下的转换
2. **字节数组转16进制字符串**: - `Bytes2HexString`方法用于将字节数组转换为16进制字符串。它遍历输入的字节数组,将每个字节与0xFF进行位与操作以确保只取低8位,然后使用`Integer.toHexString()`将结果转换为...
- `Integer.toHexString()`和`Integer.parseInt(hexStr, 16)`是十六进制字符串与整数之间转换的常用方法。 4. **字符编码与解码**: Java中的`Character`类提供了处理单个字符的方法。例如,可以使用`Character....
然后,我们遍历字节数组,使用`ToString("x2")`将每个字节转换为两位的十六进制字符串,并添加到`StringBuilder`对象中。 二、十六进制串反向转回原字符串 从十六进制串还原字符串,我们需要做相反的操作:首先将...