Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 03.01.2013, 00:45
AVL AVL вне форума
Прохожий
 
Регистрация: 03.01.2013
Сообщения: 13
Репутация: 10
Вопрос Конвертор систем счисления с операциями над битами

Всем привет!
Я новичок. Профессионально заниматься программированием не собираюсь, ибо поздновато это уже мне для зарабатывания денег (сыну 16 лет уже), а вот для самообразования и для решения мелких житейских задач программирование мне интересно.
Ближе к делу.
Начинаю разбираться с Дельфи. И для интереса решил реально нужную в жизни мне задачу поставить и с Вашей помощью её решить.
Что надо:
1. Ввести число в ХЕКС счислении (к примеру B8 B5 1F 00 ).
2. Развернуть его задом на перёд (00 1F B5 B8).
3. Поменять местами полубайты в байтах (00 F1 5B 8B).
4. XOR FFFFFFFF (FF E0 4A 47).
5. Перевести в ДЕКС (4292889159)
Или, что б долго не рассказывать, то сделать что-то похожее, как на рисунке.

Calc.jpg
Поможете мне сделать ЭТО?
Спасибо!

Последний раз редактировалось AVL, 04.01.2013 в 16:13.
Ответить с цитированием
  #2  
Старый 03.01.2013, 02:47
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Цитата:
Сообщение от AVL
... (сыну 16 лет уже), ...
И что? Моему уже 30.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 03.01.2013, 04:42
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

>1. Ввести число в ХЕКС счислении (к примеру B8 B5 1F 00 ).
Ну, тут достаточно контроля при вводе (разрешены для ввода только 0-9,A-F) и то, что кол-во введенных символов четно (length(edit1.text) div 2 = 0).

>2. Развернуть его задом на перёд (00 1F B5 B8).
Тоже легко. Хотя я бы сначала разбил бы строку на пары символов, потом бы разворачивал.

>3. Поменять местами полубайты в байтах (00 F1 5B 8B).
ну тут совсем просто, если учесть, что мы уже работаем со списком строк, в каждой из которых по 2 символа.

>4. XOR FFFFFFFF (FF E0 4A 47).
>5. Перевести в ДЕКС (4292889159)
Вот тут лучше сразу перевести в DEC (HexToInt) и потом сделать XOR.


Вообще, если нужно реализовать конкретный алгоритм (описанный по шагам), то это довольно просто. А вот если надо сделать нечто, что может выполнять набор операций, заранее не заданный, то тут немного сложнее.

Задавай конкретные вопросы, бум помогать.
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
AVL (03.01.2013)
  #4  
Старый 03.01.2013, 13:15
Dmitry_DM Dmitry_DM вне форума
Активный
 
Регистрация: 07.08.2012
Сообщения: 258
Версия Delphi: Delphi 7
Репутация: 11
По умолчанию

Я думаю вам может помочь приложенный ниже калькулятор. Он может все. Но не может выполнять действия, описаны в п. 3,4,5. Я этим калькулятором давно пользуюсь, мне помогает, полностью подходит. Надеюсь вам тоже чем-то поможет.
Вложения
Тип файла: rar calc.rar (195.6 Кбайт, 9 просмотров)
Ответить с цитированием
Этот пользователь сказал Спасибо Dmitry_DM за это полезное сообщение:
AVL (03.01.2013)
  #5  
Старый 03.01.2013, 13:30
AVL AVL вне форума
Прохожий
 
Регистрация: 03.01.2013
Сообщения: 13
Репутация: 10
По умолчанию

Всем спасибо.
Начну писать и задавать КОНКРЕТНЫЕ вопросы.
В идеале - задача сложнее обстоит.
А именно, взять файл с данными (внутри ХЕКС данные) и последовательно перебирать содержимое этого файла в поисках значения закодированного по определённому алгоритму.
Алгоритм кодировки - известен.
Он, к примеру, такой:
Берём ДЕЦ значение, делим на 20, переводим в ХЕКС, разворачиваем данные задом наперёд.
Так вот данные в ДЕЦ нам известны. Их надо найти в ХЕКС, в этом файле, в нескольких местах.
Я это делаю обычним инженерным кальком за 7 секунд. Но, поскольку я решил изучить Дельфи в нужных для меня, неболших объёмах, то и решил выбратьреально нужную для меня задачу, а не абстрактный калькулятор какой-нибудь или автоматический выключатель компа с мобильного телефона...
Ответить с цитированием
  #6  
Старый 03.01.2013, 14:14
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Используй TFileStream, в нем бегай на нужную позицию, данные можно вычитать fs.read(i {переменная назначения}, 4 {сколько байт вычитывать}) (чтение big-endian). если надо в десятичное значение, просто inttostr(i).
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
AVL (03.01.2013)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:35.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025