2012-08-03 36 views
2

我想在我的android应用程序中实现某些功能。我需要在我的类中创建一个字符串变量的HEX表示并将其转换为字节数组。事情是这样的:Android Java创建十六进制字符串并将其转换为字节数组并返回

String hardcodedStr = "SimpleText"; 
String hexStr = someFuncForConvert2HEX(hardcodedStr); // this should be the HEX string 
byte[] hexStr2BArray = hexStr.getBytes(); 

之后,我希望能够以这个hexStr2BArray转换为字符串,并得到它的价值。这样的事情:

String hexStr = new String(hexStr2BArray, "UTF-8"); 
String firstStr = someFuncConvertHEX2Str(hexStr); // the result must be : "SimpleText" 

任何建议/意见我怎么能做到这一点。另一件事,我应该能够转换这个hexString,并在任何其他平台上获得它的实际价值...如Windows,Mac,IOS。

+0

你真的需要它是十六进制(字符0..9和a..f),为什么字节数组只能是UTF-8编码的字符串? – 2012-08-03 14:05:46

+0

这是为了某种安全问题。我必须先将它转换为十六进制 – hardartcore 2012-08-03 14:06:53

+0

[将字符串转换为十六进制的Java](http://stackoverflow.com/questions/923863/converting-a-string-to-hexadecimal-in-java)<---> [将十六进制转换为ASCII in Java](http://www.mkyong.com/java/how-to-convert-hex-to-ascii-in-java/) – FoamyGuy 2012-08-03 14:22:27

回答

3

以下是我使用的两个函数,感谢Tim的评论。希望它有助于任何需要它的人。

public String convertStringToHex(String str){ 

    char[] chars = str.toCharArray(); 

    StringBuffer hex = new StringBuffer(); 
    for(int i = 0; i < chars.length; i++){ 
    hex.append(Integer.toHexString((int)chars[i])); 
    } 

    return hex.toString(); 
} 

public String convertHexToString(String hex){ 

    StringBuilder sb = new StringBuilder(); 
    StringBuilder temp = new StringBuilder(); 

    //49204c6f7665204a617661 split into two characters 49, 20, 4c... 
    for(int i=0; i<hex.length()-1; i+=2){ 

     //grab the hex in pairs 
     String output = hex.substring(i, (i + 2)); 
     //convert hex to decimal 
     int decimal = Integer.parseInt(output, 16); 
     //convert the decimal to character 
     sb.append((char)decimal); 

     temp.append(decimal); 
    } 
    System.out.println("Decimal : " + temp.toString()); 

    return sb.toString(); 
} 
相关问题