8位Fletcher算法在java中的正确实现是什么?
我正在尝试实现8位fletcher算法。 我写了一段这样做的代码,但我不确定我是否正确理解了算法。 这是我的一段代码:8位Fletcher算法在java中的正确实现是什么?,java,algorithm,checksum,8-bit,Java,Algorithm,Checksum,8 Bit,我正在尝试实现8位fletcher算法。 我写了一段这样做的代码,但我不确定我是否正确理解了算法。 这是我的一段代码: public class TestFletcher { public static void main(String[] argv) { String bin = "10010010101111101110101101110011"; char[] cA = bin.toCharArray(); int ckA = 0, ckB = 0; fo
public class TestFletcher {
public static void main(String[] argv) {
String bin = "10010010101111101110101101110011";
char[] cA = bin.toCharArray();
int ckA = 0, ckB = 0;
for (int i = 0; i < cA.length; i++){
ckA += Integer.valueOf(cA[i])/49;
ckB += ckA;
}
System.out.println(ckA);
System.out.println(ckB);
}
公共类TestFletcher{
公共静态void main(字符串[]argv){
String bin=“100101011111101110101110011”;
char[]cA=bin.toCharArray();
int ckA=0,ckB=0;
对于(int i=0;i
我得到的结果是:ckA=20,ckB=308。
我假设这不是正确的实现,因为308不能用8位二进制表示,8位二进制表示ckA和ckB的长度
有人能解释一下这个问题吗?
任何帮助都将不胜感激。谢谢。根据,您应该对ckA和ckB的值执行模数计算,以防止它们超过255。因此示例如下:
String bin = "100100101011111011101011";
char[] cA = bin.toCharArray();
int ckA = 0, ckB = 0;
for (int i = 0; i < cA.length; i++){
ckA = (ckA + Integer.valueOf(cA[i])/49) % 255;
ckB = (ckB + ckA) % 255;
}
System.out.println(ckA);
System.out.println(ckB);
System.out.println((ckB << 8) | ckA);
String bin=“1001001010111111101011”;
char[]cA=bin.toCharArray();
int ckA=0,ckB=0;
对于(int i=0;i System.out.println((ckB,谢谢你,尼尔。我会试试。我实际上是在处理更大的二进制字符串。在web上搜索测试值和相应的正确结果怎么样?这样你就可以确定你的实现是否正确,至少对于那些测试输入是这样的