gpt4 book ai didi

使用不同缓冲区进行 CRC 计算

转载 作者:行者123 更新时间:2023-11-30 21:25:14 24 4
gpt4 key购买 nike

我正在计算数据传输的简单 XOR CRC。其功能是:

static char calc_crc(unsigned char *data, unsigned len)
{
char crc = 0;
for ( int i = 0 ; i < len; i++ )
crc = crc ^ data[i];
return crc;
}

我的问题是:

如何使用来自两个单独缓冲区的数据调用此函数?

例如

unsigned char buf1[...] = { 0x1, 0x3, 0x43, 0x1, 0x0, 0x40 }
unsigned char buf2[...] = { 0x1, 0x8, 0x44, 57, 0x00 }

我想调用我的crc函数一次,并且计算必须是buf1和buf2中的内容组合在一起。

谢谢!

编辑:正如用户 Michael Walz 所写,组合缓冲区将是

unsigned char bufcombined[...] = { 0x1, 0x3, 0x43, 0x1, 0x0, 0x40, 0x1, 0x8, 0x44, 57, 0x00 }

我想从这个缓冲区中进行异或计算。

最佳答案

  1. 首先连接缓冲区,然后调用您的函数一次

    很愚蠢,但这是真正按照你的要求做的唯一方法

  2. 只需调用该函数两次,例如

    char crc = calc_crc(buf1, len1) ^ calc_crc(buf2, len2);

    这忽略了您的要求

    I want to call my crc function once

    但你从未解释过原因,这似乎是一个愚蠢的要求

  3. 重写该函数以获取缓冲区数组和长度数组。这看起来也很愚蠢,除非您经常使用 iovec 或其他东西来调用它

  4. 其他甚至更复杂的方法来完成简单的事情......

关于使用不同缓冲区进行 CRC 计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31699052/

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