Я пытаюсь перестроить конструкцию устройства последовательного порта, использующего hdlc для его формата пакета. Основанный на документации пакет должен содержать побитовое инвертирование команды (первые 4 байта), которая в этом кейс есть "HELO"
. Мониторинг последовательного порта при использовании оригинальной программы показывает, что побитовая инверсия должна быть:Вычисление побитовой инверсии char
HELO -> b7 ba b3 b0
READ -> ad ba be bb
Проблема заключается в том, что я не получаю значение даже отдаленно близко.
public object checksum
{
get
{
var cmdDec = (int)Char.GetNumericValue((char)this.cmd);
return (cmdDec^0xffffffff);
}
}
Что такое 'this.cmd', пожалуйста? 'String',' byte [] ',' char [] ', что-то еще? –
this.cmd = HELO – user1698144
'0xFFFFFFFF' не является литералом' int'. Это либо 'uint', либо' long', в зависимости от контекста (в данном случае это 'long'). Таким образом, результат 'int', являющийся XOR'd с' long', вернет 'long'. Кроме того, если вы выполняете побитовое инвертирование, вы можете использовать оператор '~'. – Abion47