使用java把utf-8转8进制
时间: 2023-05-13 20:06:03 浏览: 76
可以使用以下代码将UTF-8编码的字符串转换为8进制:
```java
public static String utf8ToOctal(String str) {
StringBuilder result = new StringBuilder();
try {
byte[] bytes = str.getBytes("UTF-8");
for (byte b : bytes) {
result.append(String.format("\\%03o", b & 0xff));
}
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return result.toString();
}
```
调用该方法并传入UTF-8编码的字符串即可得到相应的8进制字符串。
相关问题
使用java把16进制转为utf-8
可以使用以下代码将16进制转换为UTF-8:
String hex = "E4B8ADE69687E5A5BD";
byte[] bytes = new byte[hex.length() / 2];
for (int i = 0; i < bytes.length; i++) {
bytes[i] = (byte) Integer.parseInt(hex.substring(2 * i, 2 * i + 2), 16);
}
String utf8 = new String(bytes, StandardCharsets.UTF_8);
System.out.println(utf8);
这段代码将16进制字符串"e4b8ade69687e5a5bd"转换为UTF-8编码的中文字符串"中国加油"。
java怎么将16进制的UTF-8转GB18030
在 Java 中,可以使用以下代码将 16 进制的 UTF-8 编码转换为 GB18030 编码:
```java
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.charset.CharsetEncoder;
import java.nio.charset.CharsetDecoder;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
public class HexToGB18030 {
public static void main(String[] args) {
String hexStr = "E4B8ADE59BBD"; // UTF-8 编码的汉字 "中国"
// 将 16 进制字符串转换为字节数组
byte[] utf8Bytes = new byte[hexStr.length() / 2];
for (int i = 0; i < utf8Bytes.length; i++) {
utf8Bytes[i] = (byte) Integer.parseInt(hexStr.substring(i * 2, i * 2 + 2), 16);
}
// 将 UTF-8 编码的字节数组转换为字符数组
Charset utf8Charset = StandardCharsets.UTF_8;
CharsetDecoder utf8Decoder = utf8Charset.newDecoder();
ByteBuffer utf8Buffer = ByteBuffer.wrap(utf8Bytes);
CharBuffer utf8CharBuffer = null;
try {
utf8CharBuffer = utf8Decoder.decode(utf8Buffer);
} catch (Exception e) {
e.printStackTrace();
}
char[] utf8Chars = utf8CharBuffer.array();
// 将字符数组转换为 GB18030 编码的字节数组
Charset gbCharset = Charset.forName("GB18030");
CharsetEncoder gbEncoder = gbCharset.newEncoder();
ByteBuffer gbBuffer = null;
try {
gbBuffer = gbEncoder.encode(CharBuffer.wrap(utf8Chars));
} catch (Exception e) {
e.printStackTrace();
}
byte[] gbBytes = gbBuffer.array();
// 输出 GB18030 编码的字节数组的 16 进制表示
String hexGbStr = "";
for (int i = 0; i < gbBytes.length; i++) {
hexGbStr += String.format("%02X", gbBytes[i]);
}
System.out.println(hexGbStr); // 输出 "D6D0B9FA"
}
}
```
需要注意的是,如果输入的 16 进制字符串中有非法字符,或者转换时出现错误,可能会抛出异常。因此,在代码中需要使用 try-catch 语句来处理异常。