我返回一个字符串形式为“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的东西。帮助?!
答案 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个字符。