package com.ard.common.utils; /** * 字节工具类 * * @author ruoyi */ 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(); } }