| | |
| | | package jiexi; |
| | | |
| | | public class HexUtils { |
| | | // 十六进制字符快速转换表 (ASCII范围内) |
| | | // 十六进制字符快速转换表 (ASCII范围内) |
| | | private static final int[] HEX_VALUES = new int[128]; |
| | | static { |
| | | for (int i = 0; i < HEX_VALUES.length; i++) { |
| | |
| | | } |
| | | } |
| | | |
| | | // 线程安全的字符缓冲区 (初始大小256) |
| | | // 线程安全的字符缓冲区 (初始大小256) |
| | | private static final ThreadLocal<char[]> CHAR_BUF_CACHE = |
| | | ThreadLocal.withInitial(() -> new char[256]); |
| | | |
| | | /** |
| | | * 获取线程本地字符缓冲区 |
| | | * @return 可复用的char[256]缓冲区 |
| | | * 获取线程本地字符缓冲区 |
| | | * @return 可复用的char[256]缓冲区 |
| | | */ |
| | | public static char[] getThreadLocalBuffer() { |
| | | return CHAR_BUF_CACHE.get(); |
| | | } |
| | | |
| | | /** |
| | | * 快速将两个十六进制字符转换为字节 |
| | | * @param c1 高位字符 (0-9, A-F, a-f) |
| | | * @param c2 低位字符 (0-9, A-F, a-f) |
| | | * @return 转换后的字节值 (无效字符返回0) |
| | | * 快速将两个十六进制字符转换为字节 |
| | | * @param c1 高位字符 (0-9, A-F, a-f) |
| | | * @param c2 低位字符 (0-9, A-F, a-f) |
| | | * @return 转换后的字节值 (无效字符返回0) |
| | | */ |
| | | public static int fastHexToByte(char c1, char c2) { |
| | | int high = (c1 < 128) ? HEX_VALUES[c1] : -1; |