Привет всем! Написанная на ФАСМе утилита UniCNuS конвертирует в реальном времени любое целое число из множества {0, ..., 2^32-1} записано в системе счисления с основанием b є {2, ..., 2^32-1} в соответствующее представление в b'-ричной системе счисления (b' є {2, ..., 2^32-1}). Входные данные Данные вводящиеся в любое поле редактирования приложения анализируются в реальном времени а результат этого анализа немедленно указывается в остальных полях. Поля редактирования не допускают введения символов, которые не принадлежат определенному множеству знаков. Кроме того, невозможно вписать число превышающее 2^32-1. Если вводящиеся данные являются некомплектными (неправильное расположение или количество скобок в представлении числа в b-ричной системе счисления для b > 10), тогда содержимое данного поля меняет цвет из коричневого в красный. Вписываемые числа представленные в системе счисления с основанием b > 10 можно записать с помощью цифр 0, ..., 9, (10), ..., (b-1) Вместо цифр со значением от 10 до 35 можно применить латинские буквы A, ..., Z. Факт использования таких символов определяется состоянием переключателя обозначенного меткой 'A-Z'. Получаемые результаты Содержимое полей редактирования можно скопировать в буфер обмена нажимая кнопку обозначенную символом двух карточек или выбирая сочетание клавиш WIN + F11. Копированный текст записывается в форматах RTF и Unicode, благодаря чему текстовые редакторы поддерживающие формат RTF, такие как например WordPad или Word, представляют содержимое буфера обмена в таком вот виде: где x является представлением данного числа в b-ричной системе счисления, зато x' это представление этого числа в системе с основанием b'. Текстовые редакторы, которые поддерживают только простой текстовый формат, такие как Блокнот и UniRed, представляют это равенство таким образом: Интерфейс пользователя С каждым контролом программы связана всплывающая подсказка (tooltip), которая объясняет его предназначение. Кроме того, с полями редактирования, которые содержат представление числа в разных системах счисления, связаны динамически генерируемые подсказки представляющие набор цифр допускаемых в данной системе счисления: Каждое поле редактирования имеет контекстное меню, которое определяет допускаемые операции редактирования: Настройки программы Перед концом работы программа записывает свои настройки (последние значения оснований систем счисления) в следующем подразделе системного реестра: HKEY_CURRENT_USER\Software\UniCNuS Другие применения Программу можно использовать для шифрования коротких слов как это представлено на следующей картинке: Некоторые примеры других интересных конверсий: Приложение можно скачать здесь. Домашняя страница проекта: http://mikhajduk.houa.org/RU/UniCNuS.php Программа протестирована под Windows XP SP3.
ужс. такая маленькая и та в реестре гадит. нет чтоб аккуратный .ini файлик сделать, что сразу дает возможность позиционировать софтину как портейбл
В качестве дальнейшего развития предлагаю добавить возможность изменения вектора символов для представления результата. Например, стандартный вектор для шестнадцатеричной системы (0123456789ABCDEF) может быть и таким FEDCBA9876543210.
MHajduk Давай разбиремся... 1) Поддержка длинных чисел есть? 2) Поддержка после запятой есть? Второй пункт это по сути присутствие отрицательных степеней в представлении числа Скажем, как 3.14 в ХЕКСАХ записать? Я не имею ввиду тут стандарты IEEE для плавающей точки, конечно. Возможно, дробь может быть бесконечной, так что нужно выделить период. Ну ты ведь мастак по периодическим дробям, трактаты пишешь... Вот когда будет поддержка 1 и 2 тогда посмотрим... А так даже смотреть не буду и тем паче скачивать ЗЫ: кста, 3.14 в ХЕКСАХ будет 3.2(3D70A) =))) Это тебе ориентир к чему стремиться...
GMax Интересное замечание, подумаю об этом. persicum Относительно первого пункта: ты имел в виду 64-разрядные числа или ещё больше? Поддержка дробей это действительно полезная вещь. Возможно, что будет добавлена в будущей версии программы. Кстати, я очень рад что наконец появляются конструктивные комментарии...
очень оригинальная программа! приятно, когда человек сделал что-то интересное и поделился. когда человек ничего не делает - его и упрекнуть в чем-либо сложно.
Я имел в виду бесконечные насколько памяти хватит. Для серьезных вычислений с длинными числами нужна система счисления 2^32, но для такого конвертора идеально подошли бы обычные стринги. На "цифру" можно положить ограничение 2^32-1 Обязательно сделай, этим твой конвертор будет отличаться от сотен других уже имеющихся в том числе и Виндового.
MHajduk Кстати, чему равна дробь 0.6 при переводе в HEX? Ты будешь удивлен и обрадован до чрезвычайности!
Для целей шифрования можно вставить еще систему Радикс аля основание 64 - это цифры, большие буквы, маленькие, и два специальных символа по вкусу. Вот где глазенки то разбегаются - ничего не понятно!!!
Извините что опять влезаю. Просто не понимаю практической ценности. А зачем шифровать короткие слова? И это разве можно назвать "шифрованием"? Никого ни коем образом обидеть не хочу. Просто интересно услышать с какой целью автор программы использует ее.
не все программы имеют практическую ценность, очень многие пишутся с образовательной целью, для тестирования чего-либо и других подобных целей. достаточно однократно встретится с приложением типа хэлловорд, чтобы это понять.
А зачем ты переводишь стринг в целое-32, а потом обратно в стринг ??? Как я уже сказал, переводи стринг сразу в стринг и проблема длинных чисел отпадет сама собой Понимай тут под "шифрованием" своеобразное хеширование, что может иметь смысл для перевода осмысленного пароля в бессмысленный без необходимости запоминать этот бессмысленный пароль. Ценность прежде всего занимательная. Возможна также и практическая ценность, хотя она невелика из-за наличия других полноценных калькуляторов. Когда будет перевод дробей познавательная ценность еще более возрастет. Например, всем известно, что дробь 0.1 не выражается точно в двоичном коде. Отсюда возможны нелепые ошибки округления. Каков ее период в двоичном(шестнадцатиричном) коде? Этот калькулятор сможет к примеру сразу перевести 0.(9) в 1.0 и разрешить извечный спор, если входная и выходная система счисления есть с основанием десять.
Пожелания 1) Сделай пожалуйста кроме цифр еще большие-маленькие буквы, спецсимволы _@#$%& Те два спецсимвола, которые больше всего нравятся, поставь первыми для base64. И того макс база будет 68. 2) Цифры в скобках можно бы совсем убрать, можно оставить, ести хочется 3) Ввод и вывод периодических дробей в разных системах. Это требует обдуманного изучения алгоритмов для схватывания периодов бесконечных дробей, с полпинка и без поллитра сразу так не написать, нужна тщательная работа.
Конечно, я все пожелания и замечания обдумаю. Все улучшения будут добавлены постепенно. Относительно второго пункта: цифры в скобках оставлю, так как с помощью этой нотации возможно использование больших оснований систем счисления.