在Java中用字符串替换两个字符串

时间:2015-02-16 05:25:47

标签: java string bit-manipulation

我有一个32位长的0和1的字符串。我只想像二进制位一样翻转这个字符串。也就是说,0s将被替换为1并且1s将替换为0。 我尝试用Java中的代码替换这个代码:

String flippedBit = StringUtils.replaceEach(PadChar,
        new String[]{"0","1"}, new String[]{"1","0"}, false); 

但是我收到了这个错误:

  

类型中的方法replaceEach(String,String [],String [])   StringUtils不适用于参数(String,String [],   String [],boolean)

同样,我必须先将它转换为32位二进制文​​件,然后将其存储在整数中。

2 个答案:

答案 0 :(得分:2)

我会迭代一些int v的位并像

一样翻转它们
String str = Integer.toBinaryString(v);
StringBuilder sb = new StringBuilder();
for (char ch : str.toCharArray()) {
    sb.append(ch == '1' ? '0' : '1');
}
return Integer.parseInt(sb.toString(), 2);

答案 1 :(得分:0)

听起来像official nuts & bolts tutorial完全提供了你所追求的内容:

  

一元按位补码运算符“〜”反转位模式;它   可以应用于任何整数类型,使每个“0”为“1”   每个“1”一个“0”。

也就是说,假设您正在使用实际位(在这种情况下,这将节省您转换为String并返回),而不是开始的String(在这种情况下,您最好使用@ ElliottFrisch的答案。

相关问题