我正在使用蓝牙进行套接字通信,其中我将十六进制值作为字符串格式的变量。
我可以写 -
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};
答案 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)。