Задать вопрос
plr
@plr

Как транслировать C-функцию в JS?

uint16_t CRC16_CCITT(const uint8_t *buffer, uint16_t buffer_length) 
{
    unsigned short crc = 0x0000;
    unsigned char i;
 
    while( buffer_length-- )
    {
        crc ^= *buffer++ << 8;
 
        for( i = 0; i < 8; i++ )
	    crc = crc & 0x8000 ? ( crc << 1 ) ^ 0x8005 : crc << 1;
    }
 
    return crc;
}


Надо эту функцию транслировать в js-код, кто поможет?

Конечно велосипед, но библиотеки с npmjs по подсчёту crc16 не так считают как эта функция, поэтому приходится транслировать. Спасибо!
  • Вопрос задан
  • 201 просмотр
Подписаться 1 Простой Комментировать
Решения вопроса 1
doublench21
@doublench21
Сверяем:
C
KPG48QZ.png

JS
1QdRgtT.png


Получаем:
https://www.npmjs.com/package/crc-full
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
NeiroNx
@NeiroNx
Программист
Так то C++ и JS почти одинаковые
var CRC16_CCITT = function(buffer){
    let crc = 0x0000;
    for(let n = 0;n < buffer.length; n++)
    {
        crc ^= buffer.charCodeAt(n) << 8;
        for(let i = 0; i < 8; i++ )
            crc = crc & 0x8000 ? ( crc << 1 ) ^ 0x8005 : crc << 1;
    }
    return crc;
}
Ответ написан
Комментировать
dollar
@dollar
Делай добро и бросай его в воду.
Примерно так:
spoiler
5cffc12bb1f03295195783.jpeg

Но можно и самому легко. Там всё очевидно, как работает. Просто учти, что в JS символы условно двухбайтовые, то есть код символа где-то примерно от 0 до 65535.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы