Мне нужно сделать CRC-16 / CCITT-FALSE для строки для qr-кода. Код работает, но когда в строке есть «&», я получаю другой результат. Как это решить?
Я новичок в программировании на Python 2.7. К сожалению, я не могу сейчас использовать python 3.
Я пытаюсь сделать CRC-16 / CCITT-FALSE для следующей строки.
"00020101021226360009SG.PAYNOW0101202095292519L0301052040000530370254043.005802SG5911COMPANYNAME6009Singapore6214011012345678906304"
Вот что я сделал до сих пор.
# module from https://pycrc.org
import pycrc.algorithms
data_for_crc = "00020101021226360009SG.PAYNOW0101202095292519L0301052040000530370254043.005802SG5911COMPANYNAME6009Singapore6214011012345678906304"
# code example from https://pycrc.org
crc = pycrc.algorithms.Crc(width = 16, poly = 0x1021,
reflect_in = False, xor_in = 0xffff,
reflect_out = False, xor_out = 0x0000)
my_crc = crc.bit_by_bit_fast(data_for_crc)
print ('{:#04x}'.format(my_crc))
Это работает. Я проверяю это на следующем веб-сайте. https://crccalc.com/
А вот и мои проблемы.
Если в строке есть «&», то crc не совпадает с результатами https://crccalc.com/
Вот пример. Для следующей строки: «00020101021226360009SG.PAYNOW0101202095292519L0301052040000530370254043.005802SG5911COMPANY & NAME6009Singapore6214011012345678906304« Из * 1021D результат = 0x »
Из приведенного выше кода результат «0x1e80»
Должна ли строка подготовиться перед отправкой в CRC? Как получить тот же результат, что и https://crccalc.com
Другой вопрос, можно ли это сделать без установки модуля? Как просто использование стандартного питона.