如何交换word型的高位字节与低位字节的值,急在线等!

ksycsdn 2004-12-04 02:18:32
如何交换word型的高位字节与低位字节的值
...全文
2323 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzlingaaa 2004-12-04
  • 打赏
  • 举报
回复
这样行不?
function Change16Bit(Value: Word): Word;
var
Low8, High8: Word;
begin
Low8 := Value and $00FF;
High8 := Value and $FF00;
Low8 := Value shl 8;
High8 := Value shr 8;
Result := Low8 or High8;
end;
ehom 2004-12-04
  • 打赏
  • 举报
回复
overload多余
ehom 2004-12-04
  • 打赏
  • 举报
回复
Longword:

function SwapLong(Value: Cardinal): Cardinal; overload;
asm
BSWAP EAX
end;
ehom 2004-12-04
  • 打赏
  • 举报
回复
Swap
Maple119 2004-12-04
  • 打赏
  • 举报
回复
加QQ:119559997
Maple119 2004-12-04
  • 打赏
  • 举报
回复
长整数由四个8个字节组成,你想如何换就如何换了。
反过来的函数
Function mlBinToInt(InBin : pChar): Integer;
asm
MOV EAX, [EAX]
end;
ksycsdn 2004-12-04
  • 打赏
  • 举报
回复
procedure TForm1.Button1Click(Sender: TObject);
var
i32a,i32:longword;
begin
i32:=1;

(pchar(i32a))[1]:=(pchar(i32))[4];
(pchar(i32a))[2]:=(pchar(i32))[3];
(pchar(i32a))[3]:=(pchar(i32))[2];
(pchar(i32a))[4]:=(pchar(i32))[1];

showmessage(inttostr(i32a));
end;


为什么这样不可以倒过字节?
Maple119 2004-12-04
  • 打赏
  • 举报
回复
Type
TChar4 = Array[0..3] OF Char;

function mlIntToBin(IntValue: Integer; OutBin: pChar): pChar;
asm
XCHG EAX, EDX
MOV [EAX], EDX
end;

{
var
IntBin : TChar4
begin
mlIntToBin(6, IntBin)
end

}
Maple119 2004-12-04
  • 打赏
  • 举报
回复
用D也可以的。但一时忘记取值方法了。
ksycsdn 2004-12-04
  • 打赏
  • 举报
回复
不是了,是把全部的longword字节倒过来:)
好久不动汇编,不知道字节顺序的原理,所以想用不用汇编的办法,呵
Maple119 2004-12-04
  • 打赏
  • 举报
回复
我晕哟。如此精解的代码都嫌麻烦呀?
你是说 longword 的高低 16位对调吗?
ksycsdn 2004-12-04
  • 打赏
  • 举报
回复
这点活用C就简单了,用DELPHI 真苦
ksycsdn 2004-12-04
  • 打赏
  • 举报
回复
牛!
可,有没有不用汇编的办法?
我还想换longword的字节顺序倒过来
Maple119 2004-12-04
  • 打赏
  • 举报
回复
function High_Switch_Low8(Value: Word): Word;
asm
XCHG AH, AL
end;
Maple119 2004-12-04
  • 打赏
  • 举报
回复
仅将高低八位调换?

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧