Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
ВнизПоменять байты местами Найти похожие ветки
← →
secher (2005-03-14 12:41) [0]подскажите плиз как поменять местами байты в переменной Word
например 0100 сделать 0001
← →
begin...end © (2005-03-14 12:42) [1]Например, с помощью функции Swap.
← →
P.N.P. © (2005-03-14 12:47) [2]Если как в примере, то 4 shr 2,
см. хелп - Logical operators
← →
begin...end © (2005-03-14 12:57) [3]> 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.
← →
TUser © (2005-03-14 13:47) [4]второй and лишний
← →
Юрий Зотов © (2005-03-14 14:07) [5]Первый тоже...
:о)
← →
begin...end © (2005-03-14 16:29) [6]Согласен. Приношу извинения.
← →
stakan © (2005-03-14 17:43) [7]
var
L: Byte;
H: Byte;
R: Word;
begin
R := 0;
L := Lo(Исходное значение);
H := Hi(Исходное значение);
R := L;
R := R SHL 8;
R := R + H; //результат
Код несколько избыточен, для наглядности
← →
Юрий К (2005-03-14 19:52) [8]w: Word;
pch: PChar;
ch: Char;
pch: = PCHAR(@w);
ch := pch[0];
pch[0] := pch[1];
pch[1]: = ch;
← →
palva © (2005-03-14 20:09) [9]Где-то на этом форуме уже видел такую функцию:
function SwapW(i: Word): Word;
asm
XCHG al,ah
end;
Можно и в двойном слове байты в противоположном порядке разместить:
function SwapL(i: LongWord): LongWord;
asm
BSWAP eax
end;
← →
default © (2005-03-14 20:46) [10]можно ещё через ROR[ROL], три XOR"а, но быстрей всего через XCHG
← →
begin...end © (2005-03-14 20:48) [11]Ещё с CopyMemory можно
← →
secher (2005-03-15 04:16) [12]Sorry.. Вношу поправку данные в шестнадцатеричном виде
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c