2013-08-26 30 views
2

我试图编写一个函数,将一个字符串中的最后两个十六进制转换为ASCII字符。像“ab3A”应该打印“ab:”如何从十进制转换为ASCII字符

这是我写的代码,它将最后两个转换为十进制,但它无法将该十进制转换为ASCII字符。我试图使用.toString()来完成它,但没有成功。

private static String unmangle(String word) 
{  
    String newTemp = word.substring(word.indexOf('%')+1); 
    int hex = hexToInt(newTemp); 
    String strI = Integer.toString(hex); 

    System.out.println(strI); 

    word=word.replace("%", ""); 
    word=word.replace("+", " "); 
    return word = word.replace(newTemp, "")+ strI; 


} 
+1

这听起来像你真的想要http://docs.oracle.com/javase/7/docs/api/java/net/URLDecoder.html#decode(java.lang.String,java.lang.String) – SLaks

+0

你可能应该说“。 。最后两个字符..“,或者也许是”..最后两位数字..“,而不是使用上面的”decimal“一词。事实上,正如你的代码所说的,你是从“十六进制”(简称“十六进制”)转换为整数。 (但是,然后你把它转换成十进制。) –

+0

为什么重新创建'java.net.URLDecoder?' – EJP

回答

3

您是非常接近:你需要的是一个演员,而不是Integer.toString通话 -

private static String unmangle(String word) 
{  
    String newTemp = word.substring(word.indexOf('%')+1); 
    char hex = (char)hexToInt(newTemp); 

    word=word.replace("%", ""); 
    word=word.replace("+", " "); 
    return word = word.replace(newTemp, "")+ hex; 
} 
+0

非常感谢。有效 – user1896464

0

首先,你应该知道如何使十六进制ASCII码。

String newTemp=word.substring(word.length-1,word.length); 
char a=newTemp.substring(0,0); 
char b=newTemp.substring(1,1); 
int c=0,d=0; 
//And you should convert to int. 
if(a='A'|'a') 
c=10;//the same to d. 
//and 
c=c*16+d; 
String strI = Integer.toString(c); 
return word.substring(0,word.length-2)+strI; 

我很抱歉我的英语不好。这是我的方式来处理这个question.String strI = Integer.toString(hex);

这句话是wrong.It使得六角扳手string.For例如,如果十六进制= 97,STRI =“97”不是“a”

相关问题