资源说明:编写一个计算机程序用来计算一个文件的16位效验和。最快速的方法是用一个32位的整数来存放这个和。记住要处理进位(例如,超过16位的那些位),把它们加到效验和中。
要求:1)以命令行形式运行:check_sum infile
其中check_sum为程序名,infile为输入数据文件名。
2)输出:数据文件的效验和
附:效验和(checksum)
原理:把要发送的数据看成二进制整数序列,并计算他们的和。若数据字节长度为奇数,则在数据尾部补一个字节的0以凑成偶数。
例子:16位效验和计算,下图表明一个小的字符串的16位效验和的计算。
为了计算效验和,发送计算机把每对字符当成16位整数处理并计算效验和。如果效验和大于16位,那么把进位一起加到最后的效验和中。
class checksum
{
public:
checksum();
~checksum();
void input(); //输入指令,并检查指令
string readFileStr(string dataDir); //把文件的数据转为string
string sDataToHex(string sData);//把string的数据转为16进制的string
string IntToHex(int inter); //10进制转为16进制
int HexToInt(string hex); //16进制转为10进制
string HexAdd(string num1,string num2); //两个16进制的数相加
string sum(); //进行校验和运算
void output();
private:
string m_order; //保存命令行
string m_sdata; //保存文件数据
string m_sHex; //16进制的数据
};
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。