【问题标题】:computing a 8 bit checksum in c++ [closed]在 C++ 中计算 8 位校验和 [关闭]
【发布时间】:2014-12-16 12:59:46
【问题描述】:

我有以下设置,我正在尝试编写自定义文件头。我有如下描述的字段:

// Assume these variables are initialized.
unsigned short x, y, z;
unsigned int dl;
unsigned int offset;
// End assume

u_int8_t major_version = 0x31;
u_int8_t minor_version = 0x30;

u_int_32_t data_offset = (u_int_32_t)offset;

u_int16_t size_x = (u_int16_t)x;
u_int16_t size_y = (u_int16_t)y;
u_int16_t size_z = (u_int16_t)z;

u_int_32_t data_size = (u_int_32_t)dl;

现在,我想做的是从从主要修订开始到 data_size 变量的字段计算 8 位标头校验和。我对此很陌生,一些简单的东西就足以满足我目前的需求。

【问题讨论】:

  • 你的问题是什么?

标签: c++ checksum


【解决方案1】:

我不确定您要达到什么目的,但为了严格回答您的问题,通常计算 8 位校验和

sum_of_all_elements %255

简单地说,将所有元素加在一起,sum % 255 就是您的校验和
加法时注意溢出(如果遇到问题,可以计算部分和)。

附带说明,8 位校验和不是那么好 - 它无法帮助您区分所有情况,也无助于数据恢复;这就是为什么通常首选 16 位校验和的原因。

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    相关资源
    最近更新 更多