|
#1
|
||||
|
||||
Развернуть число
Мож кто знает методу попроще для того чтобы развернуть число.
Код:
function GetCardinalByte(p:pointer;ix:integer):byte; begin Result:=PByteArray(p)^[4-ix]; end; procedure TForm1.Button1Click(Sender: TObject); var data:Cardinal; s:string; i: Integer; begin data:=$01020304; s:=''; for i := 1 to 4 do s:=s+IntToHex(GetCardinalByte(@data,i),2)+' '; ShowMessage(s); end; ЗЫЖ Умники с советами IntToHex(data,8) сразу идут мимо, мне нужно число, а не строка. Строка в коде для примера. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#2
|
||||
|
||||
Код:
mov eax, $01020304 mov edx, eax shr edx, 16 xchg dh, dl xchg ah, al shl eax, 16 mov ax, dx — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Aristarh Dark (09.08.2012)
|
#3
|
||||
|
||||
Сенк, работает.
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#4
|
||||
|
||||
в WinSock есть функция htonl
Пишу программы за еду. __________________ |
#5
|
||||
|
||||
NumLock, спасибо, но внешние модули подтягивать не желательно.
Совмесно с M.A.D.M.A.N. было написано две процедуры: Код:
procedure SetCardinal(const Value:Cardinal; Dest:Pointer); begin asm mov eax, Value mov edx, eax shr edx, 16 xchg dh, dl xchg ah, al shl eax, 16 mov ax, dx mov ecx, Dest mov [ecx], eax end; end; Код:
procedure SetWord(const Value:Word; Dest:Pointer); begin asm mov ax, value xchg ah, al mov ecx, Dest mov [ecx], ax end; end; Первый параметр - что, второй - указатель куда положить. Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |