![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Байты по битам
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]Удалено модератором
Примечание: Дубль