我想反转数字的二进制表示。
程序中的方法通过参数col接收6个字符的十六进制颜色代码。它应该将此值转换为其二进制对应值(例如,1111变为0000 amd,反之亦然),然后翻转所有位。然后应将此新值转换回其十六进制相等。这将产生原始彩色图像的颜色反转。
我的代码不完整,
public String invertColor(String col)
{
String inverted = col;
int i = Integer.parseInt(inverted, 16);
String bin = Integer.toBinaryString(i);
System.out.println(bin);
return inverted;
}
有什么建议吗?感谢。
答案 0 :(得分:4)
您可以使用按位NOT运算符~
来翻转您的位。以下方法证明了这一点:
public String invertColor(String col)
{
String inverted = col;
int i = Integer.parseInt(inverted, 16);
i = ~i;
inverted = Integer.toHexString(i);
inverted = inverted.substring(2);
return inverted;
}