gpt4 book ai didi

结构体的校验和

转载 作者:行者123 更新时间:2023-11-30 20:39:57 27 4
gpt4 key购买 nike

UInt16 CheckSumUpdate (LOG_ENTRY_TYPE* pointer, UInt16 size)            
{
UChar* data;
data = pointer;

UInt16 chk = 0;
while (size--)
{
chk += *data++;
}
return chk;
}

//message data structure typedef

typedef struct
{
TIMESTAMP_TYPE oTimeStamp;
ASSERT_ID_TYPE ucAssertID;
Int16 iData1;
Int16 iData2;
UInt16 uiChecksum;
}
LOG_ENTRY_TYPE;

TIMESTAMP_TYPE 是一个具有 16 位毫秒计数器和 32 位秒计数器的结构体,而 ASSERT_ID_TYPE 只是一个枚举列表,其中包含我在操作时要检查的一堆内容。

所以这种方法可行,但一旦值高于 255,就会发生一些不好的事情。我知道无符号字符 (UChar) 可以表示最多 255 的数字,但如果我将 UChar 更改为 UInt16,我也不会得到正确的答案。有人可以在这里指出我的问题吗?

最佳答案

UInt32 chk = 0;
chk += data->iData1;
chk += data->iData2;

https://en.wikipedia.org/wiki/Struct_(C_programming_language)

关于结构体的校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067696/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com