Расчет CRC КафкиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Расчет CRC Кафки

Сообщение Anonymous »

Я пытаюсь сгенерировать сообщение производителя Kafka с помощью встроенного tcpip в .net, сообщение уже готово, но мне что-то не хватает при расчете CRC, я генерирую расчет CRC с помощью:

Код: Выделить всё

 public void InitCRC32C()
{
uint n, crc, k;

// Initialize the CRC32C table
for (n = 0; n < 256; n++)
{
crc = n;
for (int i = 0; i < 8; i++)
{
crc = (crc & 1) != 0 ? (crc >> 1) ^ POLY : crc >> 1;
}
crc32cTable[0, n] = crc;
}

for (n = 0; n < 256; n++)
{
crc = crc32cTable[0, n];
for (k = 1; k < 8; k++)
{
crc = crc32cTable[0, crc & 0xff] ^ (crc >> 8);
crc32cTable[k, n] = crc;
}
}
}

// Software CRC32C calculation
public uint CRC32Ccalculate(uint crc, byte[] buffer, int length)
{
uint crcVal = crc ^ 0xffffffff;
int index = 0;

// Process any leading bytes to bring the data pointer to an eight-byte boundary
while (length > 0 && (index & 7) != 0)
{
crcVal = crc32cTable[0, (crcVal ^ buffer[index]) & 0xff] ^ (crcVal >> 8);
index++;
length--;
}

// Process 8-byte aligned blocks
while (length >= 8)
{
ulong ncopy = BitConverter.ToUInt64(buffer, index);
crcVal ^= (uint)ncopy; // Assume the buffer is little-endian
crcVal = crc32cTable[7, crcVal & 0xff] ^
crc32cTable[6, (crcVal >> 8) & 0xff] ^
crc32cTable[5, (crcVal >> 16) & 0xff] ^
crc32cTable[4, (crcVal >> 24) & 0xff] ^
crc32cTable[3, (crcVal >> 32) & 0xff] ^
crc32cTable[2, (crcVal >> 40) & 0xff] ^
crc32cTable[1, (crcVal >> 48) & 0xff] ^
crc32cTable[0, crcVal >> 56];
index += 8;
length -= 8;
}

// Process remaining bytes
while (length > 0)
{
crcVal = crc32cTable[0, (crcVal ^ buffer[index]) & 0xff] ^ (crcVal >> 8);
index++;
length--;
}

return crcVal ^ 0xffffffff;
}
Но я получаю сообщение об ошибке в ответе Kafka. Любая помощь по этому поводу?
Моя цель - реализовать производитель Kafka по протоколу микроконтроллера, но я хотел бы протестировать перед этим на .net
Изображение


Подробнее здесь: https://stackoverflow.com/questions/793 ... alculation
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Общая настройка для python crc (6.1.1) и аппаратного блока CRC stm32?
    Anonymous » » в форуме Python
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Расчет CRC с использованием S19
    Anonymous » » в форуме Linux
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • CRC 16 бит (полиномиальное 0x1021) Расчет CCITT с начальным значением 0x0000
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Почему расчет Python с числами с плавающей точкой выполняется быстрее, чем расчет с целыми числами
    Anonymous » » в форуме Python
    0 Ответы
    32 Просмотры
    Последнее сообщение Anonymous
  • Расчет Bazel Digest расчет больших разреженных файлов медленно
    Anonymous » » в форуме Linux
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»