请教JAVA怎么将十六进制转换为字符串,多谢

如题所述

private static String hexString = "0123456789ABCDEF";
public static void main(String[] args) {
    System.out.println(encode("中文"));
    System.out.println(decode(encode("中文")));
}
/*
 * 将字符串编码成16进制数字,适用于所有字符(包括中文)
 */
public static String encode(String str) {
    // 根据默认编码获取字节数组
    byte[] bytes = str.getBytes();
    StringBuilder sb = new StringBuilder(bytes.length * 2);
    // 将字节数组中每个字节拆解成2位16进制整数
    for (int i = 0; i < bytes.length; i++) {
sb.append(hexString.charAt((bytes[i] & 0xf0) >> 4));
sb.append(hexString.charAt((bytes[i] & 0x0f) >> 0));
}
    return sb.toString();
}

/*
 * 将16进制数字解码成字符串,适用于所有字符(包括中文)
 */
public static String decode(String bytes) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream(bytes.length() / 2);
    // 将每2位16进制整数组装成一个字节
    for (int i = 0; i < bytes.length(); i += 2)
baos.write((hexString.indexOf(bytes.charAt(i)) << 4 | hexString
.indexOf(bytes.charAt(i + 1))));
    return new String(baos.toByteArray());
}
亲测可行,支持中文!!!

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-10-26
16进制转为10进制字符串
public static void main(String[] args) {
String str = "0123456789ABCDEF";
int data = 0xee; //十六进制数
int scale = 10; //转化目标进制

String s = "";
while(data > 0){
if(data < scale){
s = str.charAt(data) + s;
data = 0;
}else{
int r = data%scale;
s = str.charAt(r) + s;
data  = (data-r)/scale;
}
}

System.out.println(s);

}

java十六进制值如何转换成字符串?
Scanner scanner = new Scanner(System.in);System.out.print("请输入一个十六进制字符: ");String hexChar = scanner.nextLine().toUpperCase();scanner.close();} } 然后,将十六进制字符转换为对应的十进制数,使用`Integer.parseInt()`函数,代码如下:java import java.util.Scanner;public class...

请教JAVA怎么将十六进制转换为字符串,多谢
private static String hexString = "0123456789ABCDEF";public static void main(String[] args) { System.out.println(encode("中文")); System.out.println(decode(encode("中文")));}\/* * 将字符串编码成16进制数字,适用于所有字符(包括中文) *\/public static String encode(String str...

java 16进制byte数组 转化成UTF-8格式字符串
使用C语言,可以定义一个函数,将每个byte分成高4位和低4位,然后分别转换成对应的16进制字符,再拼接起来。使用Java语言,可以使用Integer.toHexString()方法,将每个byte转换成两个16进制字符,再拼接起来。使用Python语言,可以使用binascii.hexlify()方法,将byte数组转换成16进制字符串。: 十六进制元素...

JAVA如何将16进制数字转换为ASCII中的字符串。
使用这个方法可以传进去的16进制的数字组成的字符串转化为utf-8格式的字符串 public static String toStringHex1(String s) { byte[] baKeyword = new byte[s.length() \/ 2];for (int i = 0; i < baKeyword.length; i++) { try { baKeyword[i] = (byte) (0xff & Integer.parseInt(...

java中如何将一组16进制转换为明文
不知道你说的16进制是什么编码,一般都是unicode编码吧。Unicode->中文转换代码:import java.io.UnsupportedEncodingException;public class TestUnicode{ public static void main(String[] args) throws UnsupportedEncodingException { String s = "简介"; System.out.println(s+" --的unicode...

JAVA 怎么将16进制的数值转换成字符串?
byte[] bytes=new byte[长度]bytes[0]=0xF5;bytes[1]=0x00;bytes[2]=0x02;...以此类推 因为16进制数据实际上就是二进制数据,可以代表任何东西 所以这样的数据代表的源数据不一定是字符串,同时在不知道编码方式的情况下 即使最后通过String s=new String(bytes)转换为字符串,也可能出现的是...

在java中,如何将utf8 十六进制编码转换成汉字?
String name = new String(b, "GB2312"); \/\/转换成GB2312字符 在知道流长度的情况下将输入流转换成字节数组 Java中的输入流抽象类InputStream有int read(byte[] b, int off, int len)方法,参数中byte[] b是用来存放从InputStream中读取的数据,int off指定数组b的偏移地址,也就是数组b的起始...

十六进制字符串转换为十进制字符串
Java中,调用Integer.parseInt()方法指定十六进制基数为16进行转换,再用Integer.toString()方法将整数转为字符串。输出结果同样为"26"。C++中,使用std::stringstream类的hex格式进行十六进制解析,std::to_string函数将解析后的整数转换为字符串。确保包含sstream头文件,并在使用命名空间std或相应的函数前...

java两个十六进制数相连怎么表示
java两个十六进制数相连步骤如下:1、将两个十六进制数转换成字符串形式,可以使用Integer类的toHexString()方法。例如,如果第一个数是0x12,第二个数是0xAB,可以分别使用toHexString()方法将它们转换成字符串"12"和"ab"。2、将两个字符串拼接起来,可以使用字符串的加号运算符或concat()方法。例如...

java16进制怎么转10进制
Java中将十六进制转换为十进制的步骤如下:1. 将十六进制数字字符串作为参数传递给Integer类的parseInt方法。该方法可以将十六进制字符串转换为对应的十进制整数。例如,要将十六进制字符串"A"转换为十进制,可以使用Integer.parseInt。其中,"A"是要转换的十六进制字符串,而第二个参数指定输入字符串是十六...

相似回答