Perl的包函数与Java相当

时间:2012-04-11 07:00:56

标签: java perl hex pack

我有一些Perl代码需要在Java中进行转置。在这段代码中,我必须处理Perl的pack。 Java中是否存在等效函数? Perl代码看起来像这样:

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

2 个答案:

答案 0 :(得分: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 :(得分: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);