有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java无法正确生成校验和

我试图计算一个简单的校验和,然后我在做一个校验和测试

public void readfile()
{

    byte counter = 0;
    byte[] data = new byte[68];     
    while(x.hasNextInt())
    {
        data[counter++] = (byte)x.nextInt();
        if(counter == 67)
            break;

    }

    int sum = 0;
    for (int i = 0; i < 67; i++)
        sum += (data[i] & 0xFF);
    System.out.println((int)(sum & 0xFF)); //checksum

    //perform checksum test.
    data[counter] = (byte)(sum & 0xFF);
    sum = 0;
    for (int i = 0; i < 68; i++)
        sum += (data[i] & 0xFF);

    System.out.println((int)(sum & 0xFF)); //checksum test
}

我正在读取文件的前67个整数值,并将它们保存在字节数组中。所有整数都是<;256.变量“x”是我正在读取的文件。然而,当我执行校验和测试时,输出的值不是0。我无法诊断我在哪里计算错误


共 (1) 个答案

  1. # 1 楼答案

    我不知道你想做什么。 得到前67个字符,计算校验和,然后假设这67个字符加上校验和等于0。事实并非如此。你是在加校验和,不是在减校验和

    因此,如果校验和不是0或128,那么最终得到的值是校验和的两倍。对吧