懂C的请进 翻译一段代码 用C#

一夜清懈 2013-03-29 04:13:14
uint16_t CheckSum(uint16_t * data, uint16_t size)
{
uint32_t chksum = 0;
while (size > 1)
{
chksum += *data++;
size -= sizeof(uint16_t);
}
if (size)
{
chksum += *(uint8_t*)data;
}

while ((chksum & 0xffff0000) != 0)
{
chksum = (chksum & 0xffff) + ((chksum >> 16) & 0xffff);
}

return uint16_t(~chksum);
}
...全文
138 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
k哥哥0_0 2013-03-29
  • 打赏
  • 举报
回复
这是没有测试过的翻译,供你参考。 ushort CheckSum(ushort [] data, ushort size) { int ii = 0; uint chksum = 0; while (size > 1) { chksum += data[ii++]; size -= sizeof(ushort); } if (0 != size) { chksum += (byte)data[ii]; } while ((chksum & 0xffff0000) != 0) { chksum = (chksum & 0xffff) + ((chksum >> 16) & 0xffff); } return ushort(~chksum); }
showjim 2013-03-29
  • 打赏
  • 举报
回复
uint8_t => byte uint16_t => ushort uint32_t => uint + unsafe
申江渔夫 2013-03-29
  • 打赏
  • 举报
回复
就是变量类型比较特殊,其它逻辑好像都不用转吧
一夜清懈 2013-03-29
  • 打赏
  • 举报
回复
麻烦大神们给翻译成C#代码
bdmh 2013-03-29
  • 打赏
  • 举报
回复
校验和,位操作

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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