我有一个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位二进制文件,然后将其存储在整数中。
答案 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的答案。