所以我实际上已经实现了这一点,但我认为必须有一个更正确和更有效的解决方案。
我必须将数字转换为二进制。我通过 Integer.toBinaryString(someNumber)
来完成,现在我必须对该二进制表示中的每个数字执行 XOR 。因此,如果我的号码是 2
,其二进制表示形式是 010
,现在假设我的另一个号码是 1
或 0
,所以我必须执行 0^1,1^1,0^1
或 0^0,1^0,0^0
并创建新的二进制表示。
这是我尝试过并取得的成果。但我认为这不是最好的解决方案。我想要一个最佳且有效的解决方案,因为这是图像处理算法所必需的,并且这个过程针对每个像素进行。所以性能很重要..
String binary = Integer.toBinaryString(125);
StringBuilder concat = new StringBuilder();
char[] numericArr = binary.toCharArray();
for (char c : numericArr) {
concat.append((Character.getNumericValue(c)^input2));
}
int output = Integer.parseInt(concat, 2);
最佳答案
您确实不想靠近字符串,并且您正在执行的操作非常昂贵。
对于您的用例,我建议将您的图像存储在字节数组中并迭代它进行异或。像这样的东西:
byte[] image;
for (int i = 0; i < image.length; i++) {
image[i] ^= 255;
}
关于java - 在java中逐位读取数字字符串的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29729308/