java 16进制转字节数组
时间: 2023-12-31 10:04:57 浏览: 68
以下是Java中将16进制字符串转换为字节数组的方法:
```java
/**
* 将16进制字符串转换为字节数组
* @param hex 16进制字符串
* @return 转换后的字节数组
*/
public static byte[] hexToBytes(String hex) {
if (hex == null || hex.length() % 2 != 0) {
return null;
}
byte[] bytes = new byte[hex.length() / 2];
for (int i = 0; i < hex.length(); i += 2) {
bytes[i / 2] = (byte) ((Character.digit(hex.charAt(i), 16) << 4)
+ Character.digit(hex.charAt(i+1), 16));
}
return bytes;
}
```
这个方法将输入的16进制字符串转换为字节数组。它首先检查输入字符串是否为null或长度是否为奇数,如果是,则返回null。然后它创建一个字节数组,其长度为输入字符串长度的一半。接下来,它遍历输入字符串中的每个字符,并将其转换为字节。最后,它将字节添加到字节数组中并返回该数组。
相关问题
写一个16进制转字节数组的工具方法
以下是一个Java语言实现的16进制转字节数组的工具方法:
```java
public static byte[] hexToBytes(String hexString) {
int length = hexString.length();
byte[] bytes = new byte[length / 2];
for (int i = 0; i < length; i += 2) {
bytes[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
+ Character.digit(hexString.charAt(i+1), 16));
}
return bytes;
}
```
该方法接收一个16进制字符串作为参数,返回一个对应的字节数组。方法中使用了Character.digit()方法将16进制字符转换为对应的数字,然后通过位运算将两个数字合并成一个字节。如果输入的16进制字符串长度为奇数,则最后一个字符会被忽略。
java将 16进制的字节数组 转换成成 UTF-8 格式的字符串
可以使用Java内置的标准库中的`Charset`来进行转换。具体实现代码如下:
```java
byte[] hexBytes = new byte[] { (byte) 0xE4, (byte) 0xBD, (byte) 0xA0, (byte) 0xE5, (byte) 0xA5, (byte) 0xBD }; // 16进制的字节数组
String utf8Str = new String(hexBytes, Charset.forName("UTF-8")); // 转换成UTF-8格式的字符串
```
在上面的代码中,`Charset.forName("UTF-8")`用于获取UTF-8字符集的实例,然后将16进制的字节数组转换成UTF-8格式的字符串。
阅读全文