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

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

Поменять байты местами [D6, Win2k]


secher ©   (2005-03-14 12:41:00) 

подскажите плиз как поменять местами байты в переменной Word
например 0100 сделать 0001


secher   (2005-03-15 04:16:00) [1]

Sorry.. Вношу поправку данные в шестнадцатеричном виде


begin...end   (2005-03-14 20:48:00) [2]

Ещё с CopyMemory можно


default   (2005-03-14 20:46:00) [3]

можно ещё через ROR[ROL], три XOR'а, но быстрей всего через XCHG


palva   (2005-03-14 20:09:00) [4]

Где-то на этом форуме уже видел такую функцию:

function SwapW(i: Word): Word;
asm
 XCHG al,ah
end;

Можно и в двойном слове байты в противоположном порядке разместить:

function SwapL(i: LongWord): LongWord;
asm
 BSWAP eax
end;


Юрий К   (2005-03-14 19:52:00) [5]

w: Word;
pch: PChar;
ch: Char;

pch: = PCHAR(@w);
ch := pch[0];
pch[0] := pch[1];
pch[1]: = ch;


stakan   (2005-03-14 17:43:00) [6]


var
 L: Byte;  
 H: Byte;
 R: Word;
begin
 R := 0;
 L := Lo(Исходное значение);
 H := Hi(Исходное значение);
 R := L;
 R := R SHL 8;
 R := R + H;   //результат

Код несколько избыточен, для наглядности


begin...end   (2005-03-14 16:29:00) [7]

Согласен. Приношу извинения.


Юрий Зотов   (2005-03-14 14:07:00) [8]

Первый тоже...
:о)


TUser   (2005-03-14 13:47:00) [9]

второй and лишний


begin...end   (2005-03-14 12:57:00) [10]

> P.N.P. ©   (14.03.05 12:47) [2]

Кто ж его знает - может быть, он написал в шестнадцатеричной системе :-)

var
 W: Word;
begin
 W := ...;
 W := ((W and $FF) shl 8) or ((W and $FF00) shr 8)
end.


P.N.P.   (2005-03-14 12:47:00) [11]

Если как в примере, то 4 shr 2,
см. хелп - Logical operators


begin...end   (2005-03-14 12:42:00) [12]

Например, с помощью функции Swap.


Наверх

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