- 1
- 2
- 3
- 4
- 5
- 6
BYTE* ptr = PreventCommand(mode,3);
WORD chksum=this->calc_chksum((BYTE*)(ptr+2));
ptr[4] = (char)(chksum/256 & 0xff);
ptr[5] = (char)(chksum%256 & 0xff);
_interface_array[0]->write(ptr,6, NULL);
delete [] ptr;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+164
BYTE* ptr = PreventCommand(mode,3);
WORD chksum=this->calc_chksum((BYTE*)(ptr+2));
ptr[4] = (char)(chksum/256 & 0xff);
ptr[5] = (char)(chksum%256 & 0xff);
_interface_array[0]->write(ptr,6, NULL);
delete [] ptr;
Формирование пакета
На третью и четвертую строки смотреть особенно больно.
чтоб было пофигу little_endian или big_endian
но после деления или взятия остатка от деления "& 0xFF" забавляет.
Сначала подумал, что проще будет прямо в память положить chksum, но потом подумал, что хрен его знает, может, littleendian-а опасаются.
сумма берется от блока смещению 2 и записывается в тот же блок по смещению 4 тем самым её испортив