Получение другого результата CRC-16 / CCITT-FALSE, когда в строке есть «&» - PullRequest
0 голосов
/ 30 апреля 2019

Мне нужно сделать 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

Другой вопрос, можно ли это сделать без установки модуля? Как просто использование стандартного питона.

...