Реализация CRC32 на .NET Micro

Я искал реализацию CRC32, которую можно было бы использовать в среде .Net Micro. Я нашел эту реализацию, но микрофреймворк еще не реализовал HashAlgorithm. Что было бы лучшим способом заставить это работать?


person pritaeas    schedule 18.10.2011    source источник


Ответы (3)


.net microframework имеет метод Utility.ComputeCRC, хотя я не уверен, какой алгоритм на самом деле использует. Он, конечно, не использует один из OP. Utility.ComputeCRC

person Miha Markic    schedule 13.12.2011

Попробуйте реализацию CRC из http://vbcity.com/cfs-file.ashx/__key/CommunityServer.Components.PostAttachments/00.00.47.04.55/CRC_5F00_Lib.zip . Эта реализация обсуждается на странице http://vbcity.com/forums/t/111345.aspx.

Вы можете проверить правильность вычислений CRC по адресу http://www.lammertbies.nl/comm/info/crc-calculation.html.

Вышеупомянутая ссылка из обсуждения vbcity фактически реализует преобразование библиотеки С++, предоставленной http://www.lammertbies.nl/comm/info/crc-calculation.html.

Я обнаружил, что это правильно работает для моей реализации CRC 16.

Фрагмент короткого кода

        ushort crcno = CRC.CRC16(stryourdata);
        Byte[] crcbytes = BitConverter.GetBytes(crcno);
person Muthu    schedule 18.10.2011
comment
Спасибо, действительно выглядит многообещающе. Также нашел еще одну более простую реализацию. Я сравню их, но мне нравятся лучшие варианты этого. - person pritaeas; 18.10.2011
comment
Просто чтобы сообщить другим, BitConverter.GetBytes недоступен в Micro Framework (пока). - person pritaeas; 18.10.2011

Вы можете использовать код, на который вы ссылаетесь. HashAlgorithm просто используется как интерфейс, и вы можете отказаться от него, не нанося вреда функциональности самой реализации CRC.

Измените «защищенное переопределение пустоты HashCore (byte [] буфер, int start, int length)» на «public void CalcCrc32 (byte [] буфер, int start, int length)».

public uint CrcValue должен возвращать crcValue без изменений.

Отбросьте все остальные методы и свойства.

person Vms    schedule 18.10.2011
comment
Удален принятый ответ, потому что функция ComputeCRC является лучшим ответом (ИМХО). - person pritaeas; 13.12.2011