Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Байты по битам


Страницы:   1 2

Lx ©   (2005-08-23 11:07:00) 

Как можно в Delphi байт разделить на биты?


Плохиш   (2005-08-23 14:24:00) [1]


> begin...end

Действительно автору не поможет. "the binary value" от $BC - это символ char($BC), никогда бы не подумал 8).


Fay   (2005-08-23 13:33:00) [2]

2 Lx ©   (23.08.05 13:25) [23]
Value - твой байт
1 shl N - сдвигаем первый (нулевой) бит на N позиций влево (жми уже F1)

Value := 5;
n := 2;
Value and (1 shl N) -> 5 and 4 -> 00000101 and 00000100 = 00000100 <> 0 -> N-ный бит установлен -> Щястье


Lx   (2005-08-23 13:33:00) [3]

уже разобрался вроде... не с первого захода)


Lx   (2005-08-23 13:25:00) [4]

написано там:
if Value and (1 shl N) <> 0 then ... установлен
if Value and (1 shl N) = 0 then ... не установлен

только я не понял что есть Value, 1, n


Fay   (2005-08-23 13:01:00) [5]

Lx ©   (23.08.05 12:59) [20]
if (n and 1) = 0 then
// False
else
// True


Anatoly Podgoretsky   (2005-08-23 13:01:00) [6]

Так тебе нужен анализ/проверка бита, в статье по ссылке это есть.


Lx   (2005-08-23 12:59:00) [7]

ну в двух словах ситуация такая: есть байт, допустим, из него надо выделить флаги, каждый флаг это 1 бит... например 1-значит запись о вызове, 0-не запись о вызове...


begin...end   (2005-08-23 12:56:00) [8]

К [16]:

> По заданному шестнадцатеричному представлению IntToHex...

HexToBin, конечно же.


begin...end   (2005-08-23 12:53:00) [9]

> Плохиш ©   (23.08.05 12:46) [16]

Может, Вы тоже попробуете?

Вот простой пример:

var
 Hex: string;
 Bin: PChar;
 Int: Integer;
begin
 Hex := IntToHex(12345678, 8);            // Hex = '00BC614E'
 GetMem(Bin, 4);
 try
   HexToBin(PChar(Hex), Bin, 4);
   Hex := IntToHex(PInteger(Bin)^, 8);    // Hex = '4E61BC00'
 finally
   FreeMem(Bin)
 end
end.


Что же получилось? По заданному шестнадцатеричному представлению IntToHex сформировала в памяти последовательность байтов. Чего и следовало ожидать -- это находится в полном соответствии со справкой.

Какое это имеет отношение к исходному вопросу, я так и не понял. Вероятно, никакого отношения и нет.

> Плохиш ©   (23.08.05 12:49) [17]

Спасибо, не надо.


Плохиш   (2005-08-23 12:49:00) [10]


> begin...end ©   (23.08.05 12:36) [15]

Кстати, рекомендую воспользоваться каким-нибуть переводчиком.
Вот, что сказал www.translate.ru: " Назовите HexToBin, чтобы преобразовать шестнадцатеричный Текст строки в двойное значение, которое это представляет"


Плохиш   (2005-08-23 12:46:00) [11]


> содержащая шестнадцатеричное представление области памяти,
> на выходе -- соответствующее содержимое этой области памяти.

Брр, ничего не понял. Может ты лучше выполнить её попробуешь?


begin...end   (2005-08-23 12:36:00) [12]

> Плохиш ©   (23.08.05 12:28) [14]

Там не написано, что получится строковая переменная.

Там написано: Call HexToBin to convert the hexadecimal string Text to the binary value it represents.Насколько я понимаю, это означает следующее: на входе -- строка, содержащая шестнадцатеричное представление области памяти, на выходе -- соответствующее содержимое этой области памяти.

Так какое это имеет отношение к исходному вопросу?


Плохиш   (2005-08-23 12:28:00) [13]


> begin...end ©   (23.08.05 12:11) [11]
> В результате [2] получится фактически та же самая переменная
> Integer, только с обращённым порядком байт.

Странно, а в справке написано, что получится строковая переменная содержащая целое число в бинарном виде :-)


begin...end   (2005-08-23 12:19:00) [14]

> Fay ©   (23.08.05 12:15) [12]

Насколько я понял, имелось в виду выделение битов из байта, т.е. определение значений нужных битов. Возможно, я ошибаюсь.

Но я не думаю, что под этим подразумевалось обращение порядка байт некоторой переменной.


Fay   (2005-08-23 12:15:00) [15]

2 begin...end ©   (23.08.05 12:11) [11]
Раз уж пошла такая пьянка, скажите, что вАщЕ может помочь " разделитьбайт на биты"?!
8)


begin...end   (2005-08-23 12:11:00) [16]

> Плохиш ©   (23.08.05 11:58) [10]

И каким образом [2] может помочь разделить байт на биты?

В результате [2] получится фактически та же самая переменная Integer, только с обращённым порядком байт.


Плохиш   (2005-08-23 11:58:00) [17]


> begin...end ©   (23.08.05 11:17) [4]
> > Плохиш ©   (23.08.05 11:14) [2]
>
> Вы это к чему?

к [0]


Zeqfreed   (2005-08-23 11:27:00) [18]

Fay ©   (23.08.05 11:23) [8]
=)

Думаю, что если человек прочитает эту статью, то потом сможет более корректно сформулировать вопрос; а если уж прочитает и вдумается в то, что прочитал, то, скорее всего, самостоятельно решит свой вопрос. Вот, собственно, и вся телепатия ;)


Fay   (2005-08-23 11:23:00) [19]

2 Zeqfreed ©   (23.08.05 11:15) [3]
О! Телепаты из отпусков возвращаются 8)


Lx   (2005-08-23 11:22:00) [20]

Удалено модератором
Примечание: Дубль


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо