题目
编写一个计算机程序用来计算一个文件的16位校验和。最快速的方法是用一个32位的整数来存放这个和。记住要处理进位(例如,超过16位的那些位),把它们加到校验和中。*
原理:
把要发送的数据看成16比特的二进制整数序列,并计算他们的和。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。
例子:
16位校验和计算,下图表明一个小的字符串的16位效验和的计算。
为了计算校验和,发送计算机把每对字符当成16位整数处理并计算校验和。如果效验和大于16位,那么把进位一起加到最后的校验和中。
程序流程图
参考代码
package bridge;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class CCR16_check_sum {
public static void main(String[] args) throws IOException {
checkSum();
}
public static String checkSum() throws IOException {
String result = new String();
File file=new File("infile.txt"); //创建新文件infile
if(!file.exists()) {
file.createNewFile();
FileWriter fw = new FileWriter(file,true);
BufferedWriter bw = new