![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
![]() Всем привет!
Я новичок. Профессионально заниматься программированием не собираюсь, ибо поздновато это уже мне для зарабатывания денег (сыну 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
|
||||
|
||||
![]() Цитата:
![]() Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#3
|
|||
|
|||
![]() >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
|
|||
|
|||
![]() Я думаю вам может помочь приложенный ниже калькулятор. Он может все. Но не может выполнять действия, описаны в п. 3,4,5. Я этим калькулятором давно пользуюсь, мне помогает, полностью подходит. Надеюсь вам тоже чем-то поможет.
|
Этот пользователь сказал Спасибо Dmitry_DM за это полезное сообщение: | ||
AVL (03.01.2013)
|
#5
|
|||
|
|||
![]() Всем спасибо.
Начну писать и задавать КОНКРЕТНЫЕ вопросы. В идеале - задача сложнее обстоит. А именно, взять файл с данными (внутри ХЕКС данные) и последовательно перебирать содержимое этого файла в поисках значения закодированного по определённому алгоритму. Алгоритм кодировки - известен. Он, к примеру, такой: Берём ДЕЦ значение, делим на 20, переводим в ХЕКС, разворачиваем данные задом наперёд. Так вот данные в ДЕЦ нам известны. Их надо найти в ХЕКС, в этом файле, в нескольких местах. Я это делаю обычним инженерным кальком за 7 секунд. Но, поскольку я решил изучить Дельфи в нужных для меня, неболших объёмах, то и решил выбратьреально нужную для меня задачу, а не абстрактный калькулятор какой-нибудь или автоматический выключатель компа с мобильного телефона... |
#6
|
||||
|
||||
![]() Используй TFileStream, в нем бегай на нужную позицию, данные можно вычитать fs.read(i {переменная назначения}, 4 {сколько байт вычитывать}) (чтение big-endian). если надо в десятичное значение, просто inttostr(i).
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
AVL (03.01.2013)
|