摘要:visual basic 的位操作功能较弱,甚至连最常用的移位运算都不支持,因此在使用vb开发诸如数据加密、压缩、通信之类的程序时往往困难重重。 针对这一问题,本文详细地阐释了位操作的本质,并利用win32 api函数实现了整型变量的拆分、合并、移位等vb不支持的位操作功能。
关键词:visual basic、位操作、移位
本文相关代码(附件)
一 引言
笔者在编程实践中发现,vb对位操作的支持仅限于and、or、xor几种位运算,远远不如其他的开发工具那样全面(如visual c++、c++builder、delphi等开发工具都提供了整形变量的移位、拆分、合并的运算),因此在使用vb编写诸如加密之类的通用数据处理程序时往往困难重重。为了使以后的开发工作不再陷入僵局,我开始寻求增强vb位操作功能的通用方法,以达到一劳永逸的效果。
vb的数据类型不够丰富,整形数只包括byte、integer、long三种类型,分别对应c++中的 unsigned char、short 和 long 类型,而我们常用的二字节无符号整形unsigned short(也叫“字”、word)、四字节无符号整形unsigned long(也叫“双字”、dword)在vb中却没有被支持。 但好在无符号数和有符号数在二进制的层次上没有任何差别,不同之处仅在于编译器对变量的理解。在进行位操作时我们只关心变量的二进制位,因此vb中的integer类型可以当作word类型使用,long类型则对应dword。(此后文中提及的integer类型均指vb integer类型,long类型均指vb long类型,word 、dword类型则是不依赖于特定编译器的对二字节、四字节整形值的通用称呼)再来看位运算方面,可以看出vb不支持整型变量的左移、右移、拆分、合并等操作。
经过上述的分析之后,已经确定了工作的可行性和工作目标,于是笔者决定开发一个通用模块来增强vb的位操作功能,这个模块是可重用的,只要把这个模块加入工程中,就可以象使用vb的内置函数一样透明的使用模块中的函数,非常方便。如果使用大量的可重用模块来开发程序,则开发周期短,代码可读性好,易于维护,不容易出错。
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器