【问题标题】:Java character array to binary stringJava字符数组到二进制字符串
【发布时间】:2014-04-28 23:57:00
【问题描述】:

考虑下面的字符数组

char[] u = {'a', 'b', 'b', 'a' };

我正在寻找将其转换为二进制字符串(0110 类型)的最省时的方法,因为我需要进行一些位移并以有效的方式对数组进行计数。上面的数组将被转换为整数值 6,二进制 0110。

我使用了转换为新字符串,然后对其执行两次替换调用,然后将其转换为基数为 2 的整数,但这对我来说似乎不是一种有效的方法。

有什么帮助吗?

【问题讨论】:

  • 你怎么知道 00000001 只是 {'b'} 而不是 {'a'a'a'a'a'b}
  • 你知道1000000001
  • 因为我知道原始字符数组的长度,正如 U Mad 所说。

标签: java arrays string binary bit-manipulation


【解决方案1】:
int num = 0;
for(char c : u) {
    num = (num << 1) + (c - 'a');
}

这应该可行。

【讨论】:

    【解决方案2】:

    这个怎么样?

    int output=0;
    for(int i=0;i<u.length();i++)
        output=output<<1|u[i]-'a';
    

    【讨论】:

    • 这不会编译,因为 u 是 char 数组,而不是字符串。如果它是一个字符串,它仍然无法编译,因为正确的方法是 charAt 而不是 getCharAt
    • 哦,对不起,我忘记了。只需将 u.getCharAt(i) 替换为 u[i]。
    【解决方案3】:

    试试这个

    char[] u = {'a', 'b', 'b', 'a' };
     for(int i=0;i<u.length;i++){
      int y = (int)u[i];
      System.out.println(Integer.toBinaryString(y));}
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2012-05-08
      • 2016-07-25
      • 2015-11-21
      • 1970-01-01
      • 2014-07-15
      相关资源
      最近更新 更多