Показать сообщение отдельно
  #2  
Старый 28.07.2009, 12:38
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А чем тебя DWORD не устраивает - как раз 4 байта.
Менять порядок - с помощью масок и сдвига.

Если я правильно помню, то надо их менять парами:
Код:
const
  HiMask = $FFFF0000;
  LoMask = $0000FFFF;
var
  InWord : DWORD;
  OutWord : DWORD;
  HiWord : DWORD;
  LoWord : DWORD;
begin
  InWord := $1111AAAA; // Исх. данные
  HiWord := InWord Or HiMask;
  LoWord := InWord Or LoMask;
  HiWord := HiWord Shr 16;
  LoWord := LoWord Shl 16;
  OutWord := HiWord Or LoWord; // Получаем результат

ЗЫ. Код написал максимально развернуто, что бы был понятен алгоритм. Естественно, его можно оптимизировать как по памяти, так и по кол-ву операций. Здесь обмен местами слов, если надо поменять местами еще и байты, то делается это аналогично.
Ответить с цитированием