checksum如何计算?

招RD和QA 2003-01-21 01:28:00
请问如何计算一个文件的checksum??
...全文
1215 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
anothervip 2003-01-24
  • 打赏
  • 举报
回复
微软的例子,希望对你有帮助
anothervip 2003-01-24
  • 打赏
  • 举报
回复
//-----------------------------------------------------------------------------
// ChkSum()
// Returns an unsigned byte checksum computed on an unsigned byte
// array. The array must be 11 bytes long and is assumed to contain
// a name stored in the format of a MS-DOS directory entry.
// Passed: pFcbName Pointer to an unsigned byte array assumed to be
// 11 bytes long.
// Returns: Sum An 8-bit unsigned checksum of the array pointed
// to by pFcbName.
//------------------------------------------------------------------------------
unsigned char ChkSum (unsigned char *pFcbName)
{
short FcbNameLen;
unsigned char Sum;
Sum = 0;
for (FcbNameLen=11; FcbNameLen!=0; FcbNameLen--) {
// NOTE: The operation is an unsigned char rotate right
Sum = ((Sum & 1) ? 0x80 : 0) + (Sum >> 1) + *pFcbName++;
}
return (Sum);
}
softdoctor 2003-01-24
  • 打赏
  • 举报
回复
一般是逐个字节求做“异或”操作
招RD和QA 2003-01-21
  • 打赏
  • 举报
回复
to pazee(耙子):
bios的checksum的计算方法我不大懂,能否举个例子,3ks.
耙子 2003-01-21
  • 打赏
  • 举报
回复
选定一个算法,

一般是个字节求和,然后和一个数取模。

比如 一个文件的每个字节相加为 0x0fe345,那么和0xff 取模,结果为0x45,这个数可以算作一个校验和。

bios里面的校验和的计算方法 各字节的和与0xff取模,然后取补码作为最后一个字节,这样保证文件的总和与0xff取模为0。

AechoJohn 2003-01-21
  • 打赏
  • 举报
回复
至少要用一个Long(32bit)的求和值,然后取反!
njbfy 2003-01-21
  • 打赏
  • 举报
回复
可以把文件中每个字节值求和,这是最简单的方法

69,335

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧