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

我可以写-

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));


...也会工作。

10-08 01:45