Вероятно, существует множество интерпретаций «Управляющий символ», но я предполагаю, что вы имеете в виду C0 и C1 управляющие символы (включает ссылки на соответствующие стандарты Unicode).
Обычно используемым 32-разрядным целочисленным представлением символов Unicode является запись кодовой точки: »U +«, за которой следует как минимум 4-значное положительное шестнадцатеричное число, которое вы найдете рядом с упоминаниями символов, например, как в »U + 007F (удалить)«. Результатом вашей подпрограммы »ASCII value« будет, вероятно, это число без »U +«;
UCS-2 - это специальная кодировка символов Unicode, о которой вам, вероятно, не нужно будет заботиться напрямую), и эквивалентно кодовым точкам Unicode для всех символов в диапазоне только BMP .
Ближайшая соседняя поисковая процедура описала на странице Wikipedia, с которой Вы связались, может, конечно, быть обобщен к другим метрикам расстояния, если Вы заменяете "гиперсферу" эквивалентным геометрическим объектом для данной метрики и тестируете каждую гиперплоскость на пересечения с этим объектом.
Пример: при использовании манхэттенского расстояния вместо этого (т.е. сумма абсолютных значений всех различий в векторных компонентах), гиперсфера стала бы (многомерным) ромбом. (Это является самым легким визуализировать в 2D - если Ваш текущий ближайший сосед на расстоянии x от точки запроса p, то любой более близкий сосед позади другой гиперплоскости должен пересечь ромбовидную форму, которая имеет ширину и высоту 2x и центрируется на p). Это могло бы сделать пересекающий гиперплоскость тест более трудным кодировать или медленнее работать, однако общий принцип все еще применяется.
Я не думаю, что Вы связываетесь с евклидовым расстоянием - как j_random_hacker говорит, можно, вероятно, использовать манхэттенское расстояние - но я вполне уверен, Вы связываетесь с конфигурациями, которые могут быть представлены в декартовых координатах. Таким образом, Вы не могли использовать kd-дерево для индексации метрического пространства, например.