2012-04-11 70 views
2

我有一些Perl代碼需要在Java中轉置。在這段代碼中,我必須處理Perl的pack。 Java中是否有等價的函數? Perl代碼看起來是這樣的:在Java中相當於Perl的包函數

$somevar = pack "H*", $vartopack; 
+1

看看這個問題的答案:http://stackoverflow.com/questions/923863/converting-a-string-to-hexadecimal-in-java – 2012-04-11 07:29:23

回答

2

Perl的pack/unpack功能與自己的format syntax(在H*這裏使用的,這使得它需要任意長的十六進制字符串作爲輸入),它的高度靈活的轉換工具Java世界中沒有直接的等價物。然而,翻譯...

$somevar = pack "H*", $vartoconvert; 

...到Java,您可以使用示例:

byte[] somevar = javax.xml.bind.DatatypeConverter.parseHexBinary(vartoconvert); 

欲瞭解更多信息,請閱讀從Javadocs中DatatypeConverter class reference

1
String hex = "4a616d6573"; 
StringBuilder output = new StringBuilder(); 
for (int i = 0; i < hex.length(); i+=2) { 
    String str = hex.substring(i, i+2); 
    output.append((char)Integer.parseInt(str, 16)); 
} 
System.out.println(output);