Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
8位Fletcher算法在java中的正确实现是什么?_Java_Algorithm_Checksum_8 Bit - Fatal编程技术网

8位Fletcher算法在java中的正确实现是什么?

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

我正在尝试实现8位fletcher算法。 我写了一段这样做的代码,但我不确定我是否正确理解了算法。 这是我的一段代码:

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;iSystem.out.println((ckB,谢谢你,尼尔。我会试试。我实际上是在处理更大的二进制字符串。在web上搜索测试值和相应的正确结果怎么样?这样你就可以确定你的实现是否正确,至少对于那些测试输入是这样的