如何交换word型的高位字节与低位字节的值,急在线等!
如何交换word型的高位字节与低位字节的值 问题点数:20、回复次数:15Top
1 楼Maple119(枫叶)回复于 2004-12-04 02:25:41 得分 20
仅将高低八位调换?Top
2 楼Maple119(枫叶)回复于 2004-12-04 02:34:09 得分 0
function High_Switch_Low8(Value: Word): Word;
asm
XCHG AH, AL
end;Top
3 楼ksycsdn(ksycsdn)回复于 2004-12-04 02:37:22 得分 0
牛!
可,有没有不用汇编的办法?
我还想换longword的字节顺序倒过来Top
4 楼ksycsdn(ksycsdn)回复于 2004-12-04 02:39:12 得分 0
这点活用C就简单了,用DELPHI 真苦Top
5 楼Maple119(枫叶)回复于 2004-12-04 02:39:51 得分 0
我晕哟。如此精解的代码都嫌麻烦呀?
你是说 longword 的高低 16位对调吗?Top
6 楼ksycsdn(ksycsdn)回复于 2004-12-04 02:41:57 得分 0
不是了,是把全部的longword字节倒过来:)
好久不动汇编,不知道字节顺序的原理,所以想用不用汇编的办法,呵Top
7 楼Maple119(枫叶)回复于 2004-12-04 02:42:00 得分 0
用D也可以的。但一时忘记取值方法了。Top
8 楼Maple119(枫叶)回复于 2004-12-04 02:44:07 得分 0
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
}Top
9 楼ksycsdn(ksycsdn)回复于 2004-12-04 02:44:14 得分 0
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;
为什么这样不可以倒过字节?
Top
10 楼Maple119(枫叶)回复于 2004-12-04 02:45:19 得分 0
长整数由四个8个字节组成,你想如何换就如何换了。
反过来的函数
Function mlBinToInt(InBin : pChar): Integer;
asm
MOV EAX, [EAX]
end;Top
11 楼Maple119(枫叶)回复于 2004-12-04 02:45:49 得分 0
加QQ:119559997Top
12 楼ehom(?!)回复于 2004-12-04 05:45:28 得分 0
SwapTop
13 楼ehom(?!)回复于 2004-12-04 05:50:53 得分 0
Longword:
function SwapLong(Value: Cardinal): Cardinal; overload;
asm
BSWAP EAX
end;Top
14 楼ehom(?!)回复于 2004-12-04 05:51:22 得分 0
overload多余Top
15 楼zzlingaaa(小舟)回复于 2004-12-04 07:40:44 得分 0
这样行不?
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;Top




