Demo/src/main/java/com/example/demo/Service/HexToCharArray.java
2024-10-26 19:39:18 +08:00

58 lines
1.8 KiB
Java

package com.example.demo.Service;
import java.nio.ByteBuffer;
public class HexToCharArray {
public static void main(String[] args) {
// // 示例16进制字符串的ByteBuffer
// ByteBuffer buffer = ByteBuffer.wrap(new byte[]{0x4A, 0x6B, 0x4C, 0x6D});
//
// // 将 ByteBuffer 转换为字符数组
// char[] charArray = byteBufferToCharArray(buffer);
//
// // 打印字符数组
// System.out.println(charArray);
String hexString = "4A6B4C6D";
// 将16进制字符串转换为字符数组
char[] charArray = hexStringToCharArray(hexString);
// 打印字符数组
System.out.println(charArray);
}
public static char[] byteBufferToCharArray(ByteBuffer buffer) {
// 确保读取时从开头开始
buffer.rewind();
// 创建字符数组,每个字节转换为一个字符
char[] charArray = new char[buffer.remaining()];
for (int i = 0; i < charArray.length; i++) {
// 逐字节读取并转换为字符
charArray[i] = (char) buffer.get();
}
return charArray;
}
public static char[] hexStringToCharArray(String hexString) {
// 每两个十六进制字符表示一个字节,所以字符数组的长度为十六进制字符串长度的一半
int length = hexString.length() / 2;
char[] charArray = new char[length];
for (int i = 0; i < length; i++) {
// 取出两个十六进制字符并解析为一个字节
String hexPair = hexString.substring(2 * i, 2 * i + 2);
int byteValue = Integer.parseInt(hexPair, 16);
// 转换为字符并存入数组
charArray[i] = (char) byteValue;
}
return charArray;
}
}