我正在将代码从perl转换为java。我有点坚持在java中找到等价物。
这是我的Perl代码:
for($i = 0; $i < strlen($hex_); $i = $i + 2)
{
$ascii = $ascii.chr(hexdec(substr($hex_, $i, 2)));
}
所以在java中我可以做hex.substring(i,2)。我得到那个部分。
我如何在Java中使用chr和hexdec部分?
这是我到目前为止所拥有的
答案 0 :(得分:3)
您无需手动解析十六进制数字,只需使用Integer.parseInt(String s, int radix)即可。类似地,有一个Integer.toString(int i, int radix)会将你的整数转换为具有所需基数的String。
答案 1 :(得分:0)
我真的非常惊讶你没有使用pack
作为你的Perl版本!
$ascii = pack 'H*', $hex_;
无论如何,Perl代码的Java端口,如果你想手动编码(而不是像Apache Commons Codec这样使用),那就是:
StringBuilder sb = new StringBuilder();
for (int i = 0; i + 1 < hex.length(); i += 2)
sb.append((char) Integer.parseInt(hex.substring(i, i + 2)));
String ascii = sb.toString();