我正在使用蓝牙进行套接字通信,其中我将十六进制值作为字符串格式的变量。
我会写-
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};
最佳答案
如果您去除十六进制 String
表示的 0x
前缀,您可以使用 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));
... 也可以。
关于java - 当 String 是有效的 char 时将 String 转换为 char,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23519202/