|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.11.2009, 03:10 | #1 |
Всё знать хотяка!
Пользователь
Регистрация: 21.04.2009
Сообщений: 67
|
Байты и биты
Щас пока копаюсь в интернете, пытаюсь найти ответ на свой вопрос, но пока решил пробегом запостить его и здесь.))) Если найду удовлетворяющий меня ответ до того, как ответят здесь - удалю темку.)))
И так, к делу: Байт в "идеале" это 00000000 вот такой вот набор ноликов и единичек. Отсчёт идёт справа налево 0,1,2,3,4,5,6,7 . Моя цель изменить(если был нолик - записать единичку, если едничка - записать нолик) i-ый бит... ну скажем, 3-ий бит. У меня небольшая каша в голове насчёт программного представления этого типа данных. Чтобы разобраться, расширяю свою цель до следующего: Считать откуда нибудь байт(например, читаем с порта LPT). Записать между делом его в edit1 в виде ноликов и единичек. Изменить в считанном байте значение 3-его бита. Записать новый байт между делом в edit2 в виде ноликов и единичек. Послать новый байт туда же, откуда мы его считали... Варваским методом я проблему решил - получаю байт в десятичной системе исчисления. Процедура1 преобразует десятичное число в двоичную систему исчисления и выдаёт строку string1 ноликов и единичек. Процедура2 меняет по средствам простого условного оператора в строке string1 нужный символ на '0' или '1'. Процедура3 преобразует измененный string1 в число в десятичной системе исчисления и посылает туда же, откуда считали... Чёрт, но это слишком много действий, а у меня каждая миллисекунда на счету %(( ... Знаю/слышал/ищу, что всё это можно проделать функцией в одну строку, с применением операторов смещения и сравнения... Ну вообщем, вот как то так... Думаю проблематика понятна)))) Прошу помощи)))
Я вредный и нервный, но бдобр.
|
07.11.2009, 03:15 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
учим логические операции(not и and) а также битовый сдвиг(shl)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
07.11.2009, 03:26 | #3 |
Всё знать хотяка!
Пользователь
Регистрация: 21.04.2009
Сообщений: 67
|
Ыть, немного не успел))) Уже нашёл хороший мануал по этому делу)))
http://prg.vedenin.ru/4.php Но всё равно терзает вопрос: Можно ли считать байт x:byte ... применить к нему что-то типа inttostr ... и вывести в edit1 сразу строчку из ноликов и единичек...
Я вредный и нервный, но бдобр.
|
07.11.2009, 08:01 | #4 |
Форумчанин
Регистрация: 24.07.2008
Сообщений: 279
|
Код:
Код:
Сказал и загрустил от бесспорности своей правоты.
Последний раз редактировалось 0nni; 07.11.2009 в 08:13. |
07.11.2009, 08:06 | #5 |
Баламучу слегка...
Участник клуба
Регистрация: 01.11.2006
Сообщений: 1,585
|
Может и есть где-то в дебрях Делфи такая функция. Но действительно, запомнить их все задача не для слабаков. А я слабак! И потому обычно сам пишу подобные вещи.
Код:
Последний раз редактировалось Баламут; 07.11.2009 в 08:20. |
07.11.2009, 11:23 | #6 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
а вот, до кучи, как эти процедурки реализованы в библиотечке TurboProfessional (Copyright (c) TurboPower Software 1987.)
Код:
и ещё, массив Digits может быть сокращён до Digits: array[0..1] of Char = '01'; просто в оригинальной библиотеке он ещё используется для преобразования в Hex, поэтому я его так и оставил... |
07.11.2009, 12:02 | #7 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
А что мне остается ....
Мне остается дать ссылку на http://www.excode.ru/art5629p5.html Здесь переводы из одной системы (2,8, 10, 16) в другую (аналогично) несколькими способами + универсальная функция перевода из любой в любую.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
10.11.2009, 00:09 | #8 |
Всё знать хотяка!
Пользователь
Регистрация: 21.04.2009
Сообщений: 67
|
Всем громадное спасибо)) Просмотрел все предложенные варианты)))
В итоге всё таки решил остановится(я ленив))) на двух старых функциях(приведу их здесь... авось какому нибудь скитальцу по сети помогут)) (Спасибо громадное также DeKot'у, сэкономил мне немного времени)))): Код:
Я вредный и нервный, но бдобр.
Последний раз редактировалось Karp_13; 10.11.2009 в 00:17. |
10.11.2009, 00:28 | #9 |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
IntToHex function
HexToBin function С хэлпом никак? По аглицки "моя не понимай"? |
10.11.2009, 00:33 | #10 |
Всё знать хотяка!
Пользователь
Регистрация: 21.04.2009
Сообщений: 67
|
Чъорт, спасиб)) Где ж ты раньше был)))
Хелпом пользоваться не интересно %(( Знаю, плохая привычка))))
Я вредный и нервный, но бдобр.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как перевести биты в мегабайты? | Юзер7 | Свободное общение | 7 | 19.06.2009 17:27 |
Сбросить 3,5,7 биты | veter_s_morya | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 11 | 20.05.2008 09:43 |
Байты в стринги | FaTaL | Общие вопросы Delphi | 9 | 18.04.2008 15:46 |
Помогите заменить байты в файле | Dax | Общие вопросы Delphi | 3 | 21.06.2007 10:24 |