CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  语言基础/算法/系统设计

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

楼主ksycsdn(ksycsdn)2004-12-04 02:18:32 在 Delphi / 语言基础/算法/系统设计 提问

如何交换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

相关问题

  • 在VC中用什么函数取高位和低位字节?
  • 怎样把一个word类型的数据的两个字节拆分到两个byte中,要保持原来的高位在前,低位在后。
  • php怎么判断一个字节是汉字的高位还是低位
  • 请教一个字节有高位,是否有低位,如何划分,谢谢!!!
  • 有没有函数可以实现一个字节高位和低位的互换?在线等!!
  • 急救! 如何取得一个变量的高位字节?
  • 如何把byte的高位跟低位互换???
  • 关于如何判断汉字的高位低位问题
  • int型,高位+1,低位-1,再输出,怎样实现?
  • 写ULONG数到文件时,是低位在前面高位在后面,有没有办法使高位在前面低位在后面?

关键词

  • word
  • asm
  • i32
  • pchar
  • longword
  • low
  • high
  • eax
  • function

得分解答快速导航

  • 帖主:ksycsdn
  • Maple119

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo