无法正确生成校验和
Unable to correctly generate checksum
我正在尝试计算一个简单的校验和,然后进行校验和测试。
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。我无法诊断我计算错误的地方。
我不确定你想做什么。
您获得前 67 个字符,计算校验和,然后假设这 67 个字符加上校验和为 0。事实并非如此。您正在添加校验和,而不是减去它。
因此,如果校验和不是 0 或 128,您最终得到的值是校验和的两倍。对吗?
我正在尝试计算一个简单的校验和,然后进行校验和测试。
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。我无法诊断我计算错误的地方。
我不确定你想做什么。 您获得前 67 个字符,计算校验和,然后假设这 67 个字符加上校验和为 0。事实并非如此。您正在添加校验和,而不是减去它。
因此,如果校验和不是 0 或 128,您最终得到的值是校验和的两倍。对吗?