在Java中将十六进制字符串转换为字符串的最佳方法

时间:2010-09-01 00:04:12

标签: java string

我返回一个字符串形式为“0x52 0x01 0x23 0x01 0x00 0x13 0xa2 0x00 0x40 0x53 0x2b 0xad 0x48 0x5f 0x30 0x30 0x31 0x33 0x41 0x32 0x30 0x30 0x34 0x30 0x35 0x33 0x32 0x42 0x41 0x44”。我想将十六进制字符串转换为可读字符串 - 我是Java的新手,并且正是这样做的:

删除空格和“x”,然后 删除第一个字符,然后删除每个第三个字符(即0)。

必须有更好的方法来做到这一点,但我似乎无法找到任何值得Google的东西。帮助?!

3 个答案:

答案 0 :(得分:1)

如果你想帮助完成你描述的转换,这是一种方法:

  • 根据空格拆分字符串(现在你有一个看起来像0x的字符串数组

  • 对于数组中的每个元素,删除不喜欢的内容

  • 创建一个String并将每个数组元素连接到新创建的String中。

答案 1 :(得分:1)

这应该在理论上起作用(我认为)

public class Test
{
    public static void main(String[] args)
    {
        String input = "0x52 0x01 0x23 0x01 0x00 0x13 0xa2 0x00 0x40 0x53 0x2b 0xad 0x48 0x5f 0x30 0x30 0x31 0x33 0x41 0x32 0x30 0x30 0x34 0x30 0x35 0x33 0x32 0x42 0x41 0x44";
        String[] tokens = input.split(" ");
        for(String token : tokens)
        {
            int temp = Integer.parseInt(token.substring(2, 4), 16);
            char c = (char)temp;
            System.out.print(c);
        }
    }
}

然而,我得到了奇怪的输出(运行它,你会看到)。输入字符串是否有意义? (英语明智)

答案 2 :(得分:0)

为什么不是基于0x的令牌..
那是一个空间,一个零和一个x
它会更快更容易,而不必在每次迭代时删除2个字符。