我正在使用蓝牙进行套接字通信,在蓝牙中我将十六进制值作为字符串格式的变量获取。
我可以写-
char char1= 0x7D;
但是,如果值
0x7D
是字符串,那么如何将其转换为char。例如,我不能-
String string1 = "0x7D";
char char1 = (char)string1;
有什么办法吗?
我想要这个,因为我可以用-
char[] uploadCommand2 = {0x7d, 0x4d, 0x01, 0x00, 0x01, 0xcb};
但是如果
0x7d
是像这样的字符串则不能-char[] uploadCommand2 = {string1, 0x4d, 0x01, 0x00, 0x01, 0xcb};
最佳答案
如果删除十六进制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));
...也会工作。