【问题标题】:Binary string (11110010) to char - Java二进制字符串 (11110010) 到 char - Java
【发布时间】:2014-11-16 01:54:45
【问题描述】:

我有一个""binary"" 字符串String s1 = "10011000",想打印这个字节对应的字符(Ф),我该怎么做呢?

我已经阅读并测试了很多解决方案和教程...但找不到我想要的东西!此外,我认为纠正是一个编码问题。

例如,这段代码不起作用,但是为什么(我在输出中有“?”,所以编码问题?)?

int j = Integer.parseInt("10011000", 2);    
System.out.println(new Character ((char)j));

【问题讨论】:

标签: java


【解决方案1】:

10011000 是 unicode 代码点 152,这是一个扩展的 unicode 字符,只有在您的控制台支持其编码时才会出现

【讨论】:

  • 嗯.. 好吧,所以,当我制作 System.out.println 时,它们不是解决方案,显示这个“特殊字符”?
  • 您尝试显示的字符似乎无法在 Eclipse 控制台中显示。如@Mariusz Nosiński 的回答所示,您要查找的字符的正确 unicode 代码点是 106010000100100 :)
  • 事实上,我有一个项目,我必须将随机二进制字符串(8 位,因此每个字符串一个字节)解析为每个字符串对应的字符的字符串。并且某些角色不像真实角色那样显示,所以它会阻止下一个..
【解决方案2】:

字符Ф是西里尔大写字母;在 Unicode 中,十六进制值为 \u0424。您尝试解析的二进制字符串是十进制的 152。 \u0424 的二进制字符串是 010000100100 (十进制 1060),所以我会先解决这个问题。正如其他人所指出的,在您的环境字符集支持 Unicode 输出之前,Java 将替换为“?”当前字符集不支持的任何字符的字符。请参阅Unicode characters in Eclipse 将 Eclipse 控制台设置为 Unicode。

【讨论】:

    【解决方案3】:

    您使用了错误的代码。如果您想在输出中看到Ф,您需要将代码更改为:

    int j = Integer.parseInt("10000100100", 2);
    System.out.println((char) j);
    

    【讨论】:

    • 我总是有“?”在输出中!事实上,我有一个项目,我必须将随机二进制字符串(8 位,所以每个字符串一个字节)解析为一个字符串,每个字符串都有对应的字符。
    猜你喜欢
    • 1970-01-01
    • 2014-07-15
    • 2012-11-20
    • 2014-04-28
    • 2016-07-25
    • 1970-01-01
    • 2013-02-02
    • 2017-09-26
    • 1970-01-01
    相关资源
    最近更新 更多