Я пытаюсь сгенерировать сообщение производителя 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
Я пытаюсь сгенерировать сообщение производителя Kafka с помощью встроенного tcpip в .net, сообщение уже готово, но мне что-то не хватает при расчете CRC, я генерирую расчет CRC с помощью: [code] 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--; }
return crcVal ^ 0xffffffff; } [/code] Но я получаю сообщение об ошибке в ответе Kafka. Любая помощь по этому поводу? Моя цель - реализовать производитель Kafka по протоколу микроконтроллера, но я хотел бы протестировать перед этим на .net [img]https://i.sstatic.net/CU247CRr.png[/img]
Я отправляю данные из кода Python в stm32g0xx mcu.
Я использую аппаратный вычислительный блок CRC stm32 и в качестве другой стороны.
К сожалению, я не могу уловить общую настройку для обеих сторон.
Сторона mcu настроена по умолчанию:...
У меня есть файл S19 для прошивки. Он имеет адрес от FFC00000 до FFFFFFFF. Как рассчитать CRC, используя инструмент в Makefile, используя этот адрес, а не байты адресов S19?
Ну, я почесываю голову и очень близко, чтобы сломать его молотком. Я пытаюсь рассчитать CRC16 бит CCITT, и он не дает мне то, что он должен. Я искал почти все и не знаю, чего мне не хватает.
This is the full packet with last two bytes of CRC...
Этот пример показывает, что вычисления Python с числами с плавающей запятой выполняются быстрее, чем с целыми числами. Мне интересно, почему вычисление с целым числом не быстрее, чем с плавающей запятой
import time
# Number of operations
N = 10**7...
Мы используем Bazel для создания изображений разделения и дисков. Индивидуальные разделы построены на нескольких этапах сборки и собираются в дисковое изображение в конце. Размер составляет 1-10% от их логического размера.