package com.ard.common.utils;
|
/**
|
* 字节工具类
|
*
|
* @author ard
|
*/
|
public class ByteUtils {
|
|
/**
|
* 将字节数组转换为十六进制字符串,每个字节以0x格式显示
|
* @param bytes 字节数组
|
* @return 格式化后的字符串
|
*/
|
public static String bytesToHexString(byte[] bytes) {
|
StringBuilder sb = new StringBuilder();
|
for (byte b : bytes) {
|
sb.append(String.format("0x%02X ", b));
|
}
|
return sb.toString().trim();
|
}
|
|
/**
|
* 将字节数组转换为常规字符串
|
* @param bytes 字节数组
|
* @return 字符串
|
*/
|
public static String bytesToString(byte[] bytes) {
|
return new String(bytes);
|
}
|
|
/**
|
* 将单个字节转换为0x十六进制格式字符串
|
* @param b 字节
|
* @return 0x格式的字符串
|
*/
|
public static String byteToHex(byte b) {
|
return String.format("0x%02X", b);
|
}
|
|
/**
|
* 将十六进制字符串转换为字节数组
|
* @param hexString 十六进制字符串,支持0x前缀
|
* @return 字节数组
|
*/
|
public static byte[] hexStringToBytes(String hexString) {
|
hexString = hexString.replaceAll("0x", "").replaceAll("\\s+", "");
|
int length = hexString.length();
|
byte[] data = new byte[length / 2];
|
for (int i = 0; i < length; i += 2) {
|
data[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
|
+ Character.digit(hexString.charAt(i+1), 16));
|
}
|
return data;
|
}
|
|
/**
|
* 将字节数组转换为十六进制字符串,每个字节用空格分隔显示
|
* @param bytes 字节数组
|
* @return 格式化后的十六进制字符串
|
*/
|
public static String bytesToHexWithSpaces(byte[] bytes) {
|
StringBuilder sb = new StringBuilder();
|
for (int i = 0; i < bytes.length; i++) {
|
sb.append(String.format("%02X", bytes[i]));
|
if (i < bytes.length - 1) {
|
sb.append(" ");
|
}
|
}
|
return sb.toString();
|
}
|
}
|