Тогда я действительно не понял, просто было бы лучше если бы вы написали, что в документации вместо имени параметра с точкой должно быть имя параметра без точки.
А тут уже возможно вы ошибаетесь. Я читал документации и изучал исходники протокола, более того я использую эти исходники в работе. Дело в том, что вычисление хэша параметра происходит как бы в два этапа, сначала строковое имя параметра преобразуется в бинарное 4-х байтовое представление (а не четырех буквенное!) функцией:
/* преобразование локального идентификатора в двоичный вид
name - локальный идентификатор
length - длина идентификатора
id - идентификатор в двоичном виде
*/
void name2id(char* name, size_t length, unsigned char id[4])
Как видите во входном параметре нет ограничения на длину. Но реально длина не может быть больше 5 символов (цифры, буквы английского алфавита и '-','_','/'), причём допускаются только 4 символа, точка обрабатвается отдельно, увеличивая на единицу значение предыдушего байта, но может быть произвольное количество пробелов в конце. В общем в исходниках всё видно.
А потом уже четырех-байтовое представление преобразуется в двух-байтовое.
/* свертка локального идентификатора */
unsigned short id2hash(unsigned char id[4])
Поэтому символьное имя параметра может иметь длину больше 4-х символов, я с этим уже сталкивался и у меня как раз был обратный случай, когда я пытался посчитать хэш по 4-м символам, выбросив точку, но прибор его не "съел".






Ответить с цитированием