所以我实际上已经实现了这个目标,但我认为必须有一个更加正确和有效的解决方案。
我必须将数字转换为二进制数。我按Integer.toBinaryString(someNumber)
执行此操作现在我必须对该二进制表示中的每个数字执行 XOR 。因此,如果我的号码为2
,哪个二进制表示为010
,现在假设我的另一个号码是1
或0
,那么我必须执行0^1,1^1,0^1
或{ {1}}并创建新的二进制表示。
这是我所尝试和实现的。但我认为这不是最好的解决方案。我想要一个最好和最有效的解决方案因为这是图像处理算法所需要的,并且这个过程发生在每个像素上。所以表现很重要..
0^0,1^0,0^0
答案 0 :(得分:2)
你真的不想去任何靠近字符串的地方,你正在执行的操作非常昂贵。
对于您的用例,我建议将您的图像存储在一个字节数组中,并在执行xor时迭代它。类似的东西:
byte[] image;
for (int i = 0; i < image.length; i++) {
image[i] ^= 255;
}