Универсальный Конвертер Систем Счисления.

Тема в разделе "WASM.PROJECTS", создана пользователем MHajduk, 11 ноя 2008.

  1. MHajduk

    MHajduk New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    123
    Привет всем!

    Написанная на ФАСМе утилита UniCNuS конвертирует в реальном времени любое целое число из множества {0, ..., 2^32-1} записано в системе счисления с основанием b є {2, ..., 2^32-1} в соответствующее представление в b'-ричной системе счисления (b' є {2, ..., 2^32-1}).

    [​IMG]

    Входные данные

    Данные вводящиеся в любое поле редактирования приложения анализируются в реальном времени а результат этого анализа немедленно указывается в остальных полях. Поля редактирования не допускают введения символов, которые не принадлежат определенному множеству знаков. Кроме того, невозможно вписать число превышающее 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, представляют содержимое буфера обмена в таком вот виде:

    [​IMG]

    где x является представлением данного числа в b-ричной системе счисления, зато x' это представление этого числа в системе с основанием b'. Текстовые редакторы, которые поддерживают только простой текстовый формат, такие как Блокнот и UniRed, представляют это равенство таким образом:

    [​IMG]


    Интерфейс пользователя

    С каждым контролом программы связана всплывающая подсказка (tooltip), которая объясняет его предназначение. Кроме того, с полями редактирования, которые содержат представление числа в разных системах счисления, связаны динамически генерируемые подсказки представляющие набор цифр допускаемых в данной системе счисления:

    [​IMG]

    Каждое поле редактирования имеет контекстное меню, которое определяет допускаемые операции редактирования:

    [​IMG]


    Настройки программы

    Перед концом работы программа записывает свои настройки (последние значения оснований систем счисления) в следующем подразделе системного реестра:

    HKEY_CURRENT_USER\Software\UniCNuS


    Другие применения

    Программу можно использовать для шифрования коротких слов как это представлено на следующей картинке:

    [​IMG]

    Некоторые примеры других интересных конверсий:

    [​IMG]


    Приложение можно скачать здесь.

    Домашняя страница проекта: http://mikhajduk.houa.org/RU/UniCNuS.php

    Программа протестирована под Windows XP SP3.
     
  2. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    ужс. такая маленькая и та в реестре гадит. нет чтоб аккуратный .ini файлик сделать, что сразу дает возможность позиционировать софтину как портейбл :)
     
  3. MHajduk

    MHajduk New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    123
    На всякий случай прибавляю архив с приложением:
     
  4. GMax

    GMax Member

    Публикаций:
    0
    Регистрация:
    3 июл 2006
    Сообщения:
    218
    В качестве дальнейшего развития предлагаю добавить возможность изменения вектора символов для представления результата.
    Например, стандартный вектор для шестнадцатеричной системы (0123456789ABCDEF) может быть и таким FEDCBA9876543210.
     
  5. scriper

    scriper Николай

    Публикаций:
    0
    Регистрация:
    5 янв 2005
    Сообщения:
    19
    Адрес:
    Красноярск
    сделайте её консольной, тогда посмотрим.
     
  6. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    так и не понял, зачем она нужна.
    кому-то вообще нужна?
     
  7. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    MHajduk

    Давай разбиремся...

    1) Поддержка длинных чисел есть?
    2) Поддержка после запятой есть?
    Второй пункт это по сути присутствие отрицательных степеней в представлении числа

    Скажем, как 3.14 в ХЕКСАХ записать? Я не имею ввиду тут стандарты IEEE для плавающей точки, конечно. Возможно, дробь может быть бесконечной, так что нужно выделить период. Ну ты ведь мастак по периодическим дробям, трактаты пишешь...

    Вот когда будет поддержка 1 и 2 тогда посмотрим...
    А так даже смотреть не буду и тем паче скачивать

    ЗЫ:
    кста, 3.14 в ХЕКСАХ будет 3.2(3D70A) =)))
    Это тебе ориентир к чему стремиться...
     
  8. MHajduk

    MHajduk New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    123
    GMax
    Интересное замечание, подумаю об этом.

    persicum
    Относительно первого пункта: ты имел в виду 64-разрядные числа или ещё больше?
    Поддержка дробей это действительно полезная вещь. Возможно, что будет добавлена в будущей версии программы.

    Кстати, я очень рад что наконец появляются конструктивные комментарии... ;)
     
  9. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    очень оригинальная программа!
    приятно, когда человек сделал что-то интересное и поделился.
    когда человек ничего не делает - его и упрекнуть в чем-либо сложно.
     
  10. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Я имел в виду бесконечные насколько памяти хватит.
    Для серьезных вычислений с длинными числами нужна система счисления 2^32, но для такого конвертора идеально подошли бы обычные стринги. На "цифру" можно положить ограничение 2^32-1

    Обязательно сделай, этим твой конвертор будет отличаться от сотен других уже имеющихся в том числе и Виндового.
     
  11. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    MHajduk
    Кстати, чему равна дробь 0.6 при переводе в HEX?
    Ты будешь удивлен и обрадован до чрезвычайности!
     
  12. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Для целей шифрования можно вставить еще систему Радикс аля основание 64 - это цифры, большие буквы, маленькие, и два специальных символа по вкусу. Вот где глазенки то разбегаются - ничего не понятно!!!
     
  13. only

    only New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2008
    Сообщения:
    147
    Извините что опять влезаю.
    Просто не понимаю практической ценности.
    А зачем шифровать короткие слова?
    И это разве можно назвать "шифрованием"?
    Никого ни коем образом обидеть не хочу.
    Просто интересно услышать с какой целью автор программы использует ее.
     
  14. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    не все программы имеют практическую ценность, очень многие пишутся с образовательной целью, для тестирования чего-либо и других подобных целей. достаточно однократно встретится с приложением типа хэлловорд, чтобы это понять.

     
  15. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    А зачем ты переводишь стринг в целое-32, а потом обратно в стринг ???
    Как я уже сказал, переводи стринг сразу в стринг и проблема длинных чисел отпадет сама собой

    Понимай тут под "шифрованием" своеобразное хеширование, что может иметь смысл для перевода осмысленного пароля в бессмысленный без необходимости запоминать этот бессмысленный пароль.

    Ценность прежде всего занимательная. Возможна также и практическая ценность, хотя она невелика из-за наличия других полноценных калькуляторов.
    Когда будет перевод дробей познавательная ценность еще более возрастет.
    Например, всем известно, что дробь 0.1 не выражается точно в двоичном коде.
    Отсюда возможны нелепые ошибки округления. Каков ее период в двоичном(шестнадцатиричном) коде?

    Этот калькулятор сможет к примеру сразу перевести 0.(9) в 1.0 и разрешить извечный спор, если входная и выходная система счисления есть с основанием десять.
     
  16. persicum

    persicum New Member

    Публикаций:
    0
    Регистрация:
    2 фев 2007
    Сообщения:
    947
    Пожелания

    1) Сделай пожалуйста кроме цифр еще большие-маленькие буквы, спецсимволы _@#$%&
    Те два спецсимвола, которые больше всего нравятся, поставь первыми для base64.
    И того макс база будет 68.
    2) Цифры в скобках можно бы совсем убрать, можно оставить, ести хочется
    3) Ввод и вывод периодических дробей в разных системах.
    Это требует обдуманного изучения алгоритмов для схватывания периодов бесконечных дробей, с полпинка и без поллитра сразу так не написать, нужна тщательная работа.
     
  17. MHajduk

    MHajduk New Member

    Публикаций:
    0
    Регистрация:
    7 ноя 2006
    Сообщения:
    123
    Конечно, я все пожелания и замечания обдумаю. :) Все улучшения будут добавлены постепенно.

    Относительно второго пункта: цифры в скобках оставлю, так как с помощью этой нотации возможно использование больших оснований систем счисления. :)