当 String 是有效的 char 时将 String 转换为 char
Posted
技术标签:
【中文标题】当 String 是有效的 char 时将 String 转换为 char【英文标题】:Converting String to char when String is a valid char 【发布时间】:2014-06-24 12:18:58 【问题描述】:我正在使用蓝牙进行套接字通信,其中我将十六进制值作为字符串格式的变量。
我会写 -
char char1= 0x7D;
但不知何故,如果值0x7D
是字符串,那么如何将其转换为字符。
例如,我做不到-
String string1 = "0x7D";
char char1 = (char)string1;
有什么方法可以做到这一点?
我想要这个,因为我可以用 - 写入套接字
char[] uploadCommand2 = 0x7d, 0x4d, 0x01, 0x00, 0x01, 0xcb;
但如果0x7d
是一个类似 --
char[] uploadCommand2 = string1, 0x4d, 0x01, 0x00, 0x01, 0xcb;
【问题讨论】:
How to convert/parse from String to char in java? 的可能重复项 @UrsulRosu - 这将为他返回“0”。不是他想要的 不是重复的,我不明白为什么这被否决了。这是一个很好的问题,问得恰当,有足够的信息来尝试回答它。 @njzk2 删除了关闭投票。那是他编辑之前的问题... :) 【参考方案1】:如果您去掉十六进制 String
表示的 0x
前缀,您可以使用 Integer.parseInt
并转换为 char
。
请参阅下面的 edit 以获取替代方案(可能更优雅的解决方案)。
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));
... 也可以。
【讨论】:
见 ***.com/a/11377996/671543 不需要去掉 0x,decode
这样做
@Mena - 不剥离 0x 就不可能吗?我不能得到 char 0x7D
吗?
在 njzk2 的建议之后,@VedPrakash 看到我的编辑。 decode
方法可以做到这一点。但是你需要双重施法。【参考方案2】:
Integer.parseInt(String)
返回给定字符串的整数表示,然后您可以从中获取字符。
【讨论】:
【参考方案3】:String string1 = "0x7D";
char char1 = (char) Integer.parseInt(string1.substring(2), 16);
编辑:这行得通,但 Integer.decode()
是去这里的方式(感谢 njzk2)。
【讨论】:
不剥离 0x 就不可能吗?我不能得到 char0x7D
吗?
@VedPrakash: 否。文档指出字符串只能包含+
、-
和指定基数的数字(在这种情况下,0
- 9
、@987654328 @ - f
, A
- F
)。以上是关于当 String 是有效的 char 时将 String 转换为 char的主要内容,如果未能解决你的问题,请参考以下文章
利用char, str2mat, strvcat创建多行字符串数组