Я использую этот пакет CRC для вычисления значений CRM XMODEM CCITT для сообщений. Значения crc - это uint64s, и автор демонстрирует печать шестнадцатеричное значение кода CRC в виде двух байтов, используя
// crc1 is a uint64
fmt.Printf("CRC is 0x%04X\n", crc1) // prints "CRC is 0x2C89"
Как преобразовать это в два байта, не превращая его в строкуи разделить это? %04X
- это основа-16 двух символов на байт, если я правильно понимаю fmt docs.
Я знаю только несколько вещей: (1) аппаратное обеспечение, для которого я пишу адаптер, ожидает два байта длязначение CRC. (2), что автор этого пакета CRC показывает, что uint64 может отображаться как 0xFFFF, что составляет два байта. (3), что онлайн-калькуляторы CRC показывают эти значения в виде двух байтов, например https://www.lammertbies.nl/comm/info/crc-calculation.html. Остальное для меня ново ...
Я только что опубликовал фрагмент из файла readme пакета CRC. Поскольку размер uint64 обычно составляет 8 байт, я действительно не понимаю, как это можно сделать без потери данных.