LINUX.ORG.RU

Как тут XOR считается?

 


0

1

В документации написано:

  • cc: is a check sum (technically an inverted XOR of all bytes returned, excluding the check sum bytes and the <CR> character);

Я пробовал складывать XOR результаты между ASCII кодами и увеливать общую сумму. Но в обоих случаев получается число гораздо меньше.

вот образцы

?:0010:00::c1
?:0011:00::c0
?:3010:00::c2
★★★★★

Последнее исправление: steemandlinux (всего исправлений: 1)

ключевое слово «inverted», т.е. начинать надо с 0xff (и за-xor-ивать туда код каждого символа), тогда в вашем примере всё сходится.

LeninGad
()

Образцы нифига не понял. Документация тоже не очень понятна.

Пока кажется, что sum = not ( a1 xor a2 xor a3 ... an) a1...an - какие-то входные байты. Но почему excluding?

praseodim ★★★★★
()
Ответ на: комментарий от LeninGad

А можно разъяснить такое понимание? Почему inverted - это заксориривание с 0xff, а не not xor? Хотя кажется и логичным с 0xff (тем более если сходится), тогда можно один байт заксорить.

praseodim ★★★★★
()
Ответ на: комментарий от praseodim

not(xor(…)) как беззнаковый байт это то же самое, что xor(0xff,…).

в образце берём, например, «?:3010:00::», xor-им каждый символ и инвертируем, ну и получаем 0xC2.

LeninGad
()
Ответ на: комментарий от vbr

А вот что такое inverted. Я думал они имели в виду строку. А это маска.

steemandlinux ★★★★★
() автор топика
Ответ на: комментарий от LeninGad

Спасибо :) Как-то случайно написал правильную функцию.

steemandlinux ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.