当String是有效字符时,将String转换为char

时间:2014-05-07 13:27:35

标签: java android string char android-bluetooth

我正在使用蓝牙进行套接字通信,其中我将十六进制值作为字符串格式的变量。

我可以写 -

char char1= 0x7D;

但不知何故,如果值0x7D是字符串,那么如何将其转换为char。

例如,我无法做到 -

String string1 = "0x7D";
char char1 = (char)string1;

这样做的方法是什么?

我想要这个,因为我可以用 -

写入套接字
char[] uploadCommand2 =  {0x7d, 0x4d, 0x01, 0x00, 0x01, 0xcb};

但如果0x7d是一个像< - p>这样的字符串,那就不能了

char[] uploadCommand2 =  {string1, 0x4d, 0x01, 0x00, 0x01, 0xcb};

3 个答案:

答案 0 :(得分:3)

如果您删除了十字0x代表的String前缀,则可以使用Integer.parseInt并转换为char

请参阅下面的编辑以获取替代方案(可能更优雅的解决方案)。

String s = "0x7D";
//                  | casting to char
//                  |    | parsing integer ...
//                  |    |                | on stripped off String ...
//                  |    |                |               | with hex radix
System.out.println((char)Integer.parseInt(s.substring(2), 16));

<强>输出

}

修改

正如njzk2所指出的那样:

System.out.println((char)(int)Integer.decode(s));

......也会奏效。

答案 1 :(得分:0)

Integer.parseInt(String)返回给定String的Integer表示,然后您可以从中获取该字符。

答案 2 :(得分:0)

String string1 = "0x7D";
char char1 = (char) Integer.parseInt(string1.substring(2), 16);

编辑:这有效,但Integer.decode()是这里的方式(感谢njzk2)。