【问题标题】:Converting String to char when String is a valid char当 String 是有效的 char 时将 String 转换为 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};

【问题讨论】:

  • @UrsulRosu - 这将为他返回“0”。不是他想要的
  • 不是重复的,我不明白为什么这被否决了。这是一个很好的问题,问得恰当,有足够的信息来尝试回答它。
  • @njzk2 删除了关闭投票。那是他编辑之前的问题... :)

标签: java android string char android-bluetooth


【解决方案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));

... 也可以。

【讨论】:

  • stackoverflow.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 就不可能吗?我不能得到 char 0x7D 吗?
    • @VedPrakash: 否。文档指出字符串只能包含+- 和指定基数的数字(在这种情况下,0 - 9、@987654328 @ - f, A - F)。
    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2014-11-19
    • 2011-01-11
    相关资源
    最近更新 更多