CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

用 VB编程

楼主windroses(晴月)2002-12-06 11:01:33 在 VB / 基础类 提问

有关2,8,16,10进制的自动换算! 问题点数:20、回复次数:5Top

1 楼koa3000(koa)回复于 2002-12-06 11:35:36 得分 10

用函数Oct()将十进制位数   转换为八进制,用Hex()将十进制位   数转换为十六进制,不过值得注意的   是转换后数字型变为字符型。如果是   一个变量我们可以用如下代码完成十   进制向其他进制转换的目的。  
  dim   Anum   as   long  
  Anum=&   010   '&0是八进制的   表示符号Anum自行转换为8。  
  Anum=&HA   '&H是十六进制的   表示符号Anum自行转换为10。  
  如果我们有一个字符变量Astring   为八进制的或十六进制的,用Anum=”   &0”   +   Astring和Anum=“&H”+Astring   能将它转换为十进制。  
   
  VB中没有二进制的转换函   数,用如下代码可以实现十进制到二进   制的转换。  
  Option   Explicit  
  Ptivate   FunctiOn   TenturnTwo   (ByVal   varNum   As   Long)  
  Dim   returnString   As   String,ModNum   As   Integer  
  DO   While   varNum>0  
  ModNum=varNum   Mod   2  
  varNum=varNum\2  
  returnString=Trim(Str   (ModNum))+returnString  
  Loop  
  TenturnTwo=returnString  
  End   Function  
  Private   Function   TwoturnTen   (ByVal   varString   As   String)  
  Dim   Slen   As   Long,I   As   Long,  
  returnNum   As   Long  
  Slen=Len(varString)  
  For   I=o   To   Slen-1  
  returmNum=returnNum   +Val(Mid   (varString,I+1,1))*(2^(Slen-I-1))  
  Next  
  TWoturnTen=returnNum  
  End   Function  
  Top

2 楼shawls(VB Fan)(QQ:9181729)回复于 2002-12-06 11:35:40 得分 10

[名称]                       VB中的快速进制转换  
   
  [语言种类]               Visual   Basic  
   
  [类别一]                   算法  
   
  [类别二]                   空  
   
  [类别三]                   空  
   
  [数据来源]               csdn/samuelxp(原作)  
   
  [保存时间]               2002-04-21  
   
  [关键字一]               数据  
   
  [关键字二]               转换  
   
  [关键字三]               进制  
   
  [内容简介]               空  
   
  [源代码内容]  
   
          有人说vb不能操作内存,效率低下,我不是太赞同.vb跟c比当然效率比较低下了,但是如果使用得当还是有不少的效率提高的.  
   
            在开发windows上的应用时(注意啊,不是驱动),理论上来说,用vb可以做任何软件.因为vb本身没有的,可以使用api,而win32   api时可以实现windows上的任何应用功能的.当然这和使用者的功力有很大的关系,如果c/c++的功力很好,你甚至可以用vb实现内存拷贝的功能,因为long类型可以做指针.  
   
            最近在做界面,   对vb有点研究,   给个例子吧.比如10进制转换2进制.  
   
            用vb的一般用除法这么做:    
  public   function   o2b(byval   long   nValue)   as   string  
            dim   nValueCopy   as   long  
            dim   nTmp   as   byte   '商  
          dim   sReturn   as   string   '返回值  
          nValueCopy   =   nValue  
   
            '也有用nValue   -   2^N   方式的,这里就不多说了    
   
          do   while   nValueCopy   >   0  
                      nTmp   =   nValueCopy   /   2                        
                      sReturn   =   cstr(   nValueCopy   -   nTmp   /   2   )   &   sReturn     '反向累计  
                  nValueCopy   =   nTmp  
            loop  
       
            o2b   =   sReturn  
   
   
  end   function  
   
            而用c比较熟的人一般按位去做:  
  public   function   o2b(byref   long   nValue)   as   string  
            dim   nBit(   0   to   7   )   as   byte               '   最小的单位是byte了,放掩码  
          dim   nByte(   1   to   4   )   as   byte           '   分解nValue到字节的  
          dim   nTmp   as   byte  
            dim   pValue   as   long                                 '   指针  
            dim   sReturn   as   string                           '   返回值  
          dim   i   as   byte,   j   as   byte  
   
            nBit(0)   =   1                         '00000001      
            nBit(1)   =   2                         '00000010  
            nBit(2)   =   4                         '00000100  
            nBit(3)   =   8                         '00001000  
            nBit(4)   =   16                       '00010000  
            nBit(5)   =   32                       '00100000  
            nBit(6)   =   64                       '01000000  
            nBit(7)   =   128                   '10000000  
   
            '   取   nValue   的地址  
            pValue   =   VarPtr(   nValue   )  
   
            '   win32   api,   将nValue的4个字节分别复制到nByte中,byref   就相当于指针  
          CopyMemory(   nByte(1),   byref   pValue,   4   )  
   
            for   i   =   4   to   1             '低字节在前  
                for   j   =   7   to   0         '高位开始  
                    '   方法一,   减法  
                    nTmp   =   0  
                              if   nByte(i)   >   nBit(j)   then  
                                      nByte   =   nByte(i)   -   nBit(j)  
                                      nTmp   =   1                       '   这一位二进制是1  
                              end   if  
                              sReturn   =   sReturn   &   cstr(nTmp)  
   
                              '   方法二,按位与   效率更高  
                  nTmp   =   1  
                              if   (   not   (   nByte(i)   imp   nBit(j)   )   )   =   nBit(j)   then  
                              '   我没有找到vb按位与的函数,只有按位"同与"(不记得是不是)的imp  
                                        nTmp   =   0  
                              end   if  
                              sReturn   =   sReturn   &   cstr(nTmp)  
            next   j,   i  
   
            o2b   =   sReturn  
   
  end   function  
   
   
            以上代码保存于:   SourceCode   Explorer(源代码数据库)  
                        复制时间:   2002-12-06   11:33  
                        软件版本:   1.0.771  
                        软件作者:   Shawls  
                        个人主页:   Http://Shawls.Yeah.Net  
                            E-Mail:   ShawFile@163.Net  
                                    QQ:   9181729Top

3 楼koa3000(koa)回复于 2002-12-06 11:38:08 得分 0

用函数Oct()将十进制位数   转换为八进制,用Hex()将十进制位   数转换为十六进制,不过值得注意的   是转换后数字型变为字符型。如果是   一个变量我们可以用如下代码完成十   进制向其他进制转换的目的。  
  dim   Anum   as   long  
  Anum=&   010   '&0是八进制的   表示符号Anum自行转换为8。  
  Anum=&HA   '&H是十六进制的   表示符号Anum自行转换为10。  
  如果我们有一个字符变量Astring   为八进制的或十六进制的,用Anum=”   &0”   +   Astring和Anum=“&H”+Astring   能将它转换为十进制。  
  Top

4 楼windroses(晴月)回复于 2002-12-11 15:01:05 得分 0

这不是普通的进制转换!  
  VB的界面必须象触摸屏一样!包括数字可以任意点击在text中,从而按“转换键”  
  时就可以达到转换的效果了!  
  Top

5 楼accpsh(george)回复于 2002-12-11 15:13:44 得分 0

UP!Top

6 楼koa3000(koa)回复于 2002-12-12 10:33:32 得分 0

 
    你的意思是不是加上一个   界面   而已?  
    核心方法就是上述所说。  
   
    转换总是有一个方向问题的,你   按“转换键”,总是要说明是把什么转换为什么。  
       
  Top

相关问题

  • 如何用VB进行ISDN的编程
  • 如何用vb编程发E--mail?.........
  • 我想用vb编程打开excel.急....
  • VB控件编程
  • 用VB进行mdb数据库编程,如何进行备份?
  • 如何用VB编程来取得本地计算机名?
  • 怎样用vb编程在access数据库中存取图片?
  • 用vb编写有关数据库编程的问题
  • 找一份用vb编程的工作需要注意什么
  • 如何在vb中用编程实现添加按钮

关键词

  • .net
  • win32 api
  • 转换
  • 字符
  • vb
  • 代码
  • anum
  • varnum
  • 八进制
  • 十进制

得分解答快速导航

  • 帖主:windroses
  • koa3000
  • shawls

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

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