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

VB如何实现字符串(包括大小写字母、数字)与二进制的相互转换?

楼主xilu_gong(禄子)2005-11-20 17:19:08 在 VB / 基础类 提问

以下是我的代码,我现在只能把小写字母转为二进制并且可以再转换回来,数字和大写字母转换后就不对了,谁知道如何解决这个问题?  
  '=====================================================================================  
  '字符串转成二进制  
  Public   Function   StringToBinary(ByVal   VarString   As   String)   As   Variant    
      Dim   strBin   As   Variant  
      Dim   varchar   As   String  
      Dim   varasc   As   Long  
      Dim   varlow,   varhigh  
      Dim   i   As   Long  
      strBin   =   ""  
       
      For   i   =   1   To   Len(VarString)  
              varchar   =   Mid(VarString,   i,   1)  
              varasc   =   Asc(varchar)  
              If   varasc   <   0   Then  
                      varasc   =   varasc   +   65535  
              End   If  
              If   varasc   >   255   Then  
                      varlow   =   Left(Hex(Asc(varchar)),   2)  
                      varhigh   =   Right(Hex(Asc(varchar)),   2)  
                      strBin   =   strBin   &   ChrB("&H"   &   varlow)   &   ChrB("&H"   &   varhigh)  
              Else  
                      strBin   =   strBin   &   ChrB(AscB(varchar))  
              End   If  
      Next  
      StringToBinary   =   strBin  
  End   Function  
   
  '========================================================================  
  '二进制转换为字符串  
  Public   Function   BinaryToString(ByVal   BinaryStr   As   Variant)   As   String    
      Dim   lnglen   As   Long  
      Dim   tmpBin   As   Variant  
      Dim   strC   As   String  
      Dim   skipflag   As   Long  
      Dim   i   As   Long  
      skipflag   =   0  
      strC   =   ""  
       
      If   Not   IsNull(BinaryStr)   Then  
              lnglen   =   LenB(BinaryStr)  
              For   i   =   1   To   lnglen  
                      If   skipflag   =   0   Then  
                          tmpBin   =   MidB(BinaryStr,   i,   1)  
                          If   AscB(tmpBin)   >   127   Then  
                                  strC   =   strC   &   Chr(AscW(MidB(BinaryStr,   i   +   1,   1)   &   tmpBin))  
                                  skipflag   =   1  
                          Else  
                                  strC   =   strC   &   Chr(AscB(tmpBin))  
                          End   If  
                      Else  
                          skipflag   =   0  
                      End   If  
              Next  
          End   If  
          BinaryToString   =   strC  
  End   Function 问题点数:50、回复次数:6Top

1 楼province_(雍昊)回复于 2005-11-20 18:00:22 得分 20

Function   getByteString(StringStr)  
  Dim   i,char  
            For   i=1   to   Len(StringStr)  
                      char=Mid(StringStr,i,1)  
                      getByteString=getByteString&chrB(AscB(char))  
            Next  
  End   Function  
   
  Function   getString(StringBin)  
  Dim   i  
            getString=""  
            For   i=1   to   LenB(StringBin)  
                      getString=getString&chr(AscB(MidB(StringBin,i,1)))    
            Next  
  End   FunctionTop

2 楼xilu_gong(禄子)回复于 2005-11-20 18:14:26 得分 0

多谢回复!可我用你的函数试了,结果和我的一样啊!Top

3 楼northwolves(狼行天下)回复于 2005-11-20 20:49:55 得分 20

不是很明白楼主的意思,试试:  
   
  Public   Function   StringToBinary(ByVal   VarString   As   String)   As   Variant  
  Dim   b()   As   Byte,   strBin   As   String,   i   As   Integer  
  b   =   StrConv(VarString,   vbUnicode)  
  For   i   =   0   To   UBound(b)  
  strBin   =   strBin   &   ChrB(b(i))  
  Next  
  StringToBinary   =   strBin  
  End   Function  
   
  Public   Function   BinaryToString(ByVal   BinaryStr   As   Variant)   As   String  
    Dim   b()   As   Byte,   i   As   Integer  
    ReDim   b(1   To   LenB(BinaryStr))  
    For   i   =   1   To   LenB(BinaryStr)  
    b(i)   =   AscB(MidB(BinaryStr,   i,   1))  
    Next  
    BinaryToString   =   StrConv(b,   vbFromUnicode)  
  End   FunctionTop

4 楼rainstormmaster(暴风雨 v2.0)回复于 2005-11-21 08:35:07 得分 10

我也没看明白,楼主详细说说吧:比如说有一字串"abc",转换为2进制之后应该是什么呢Top

5 楼xilu_gong(禄子)回复于 2005-11-21 10:16:28 得分 0

我试了一下northwolves的代码,还是不行。  
  其实我写这段代码的目的是将一种卡的卡号(卡号是以十六进制字符串表示,所以包含了字符和数字)转换为二进制,然后写入文本文件,给客户卡片的同时附带这个文本文件。在其发卡时我会读出卡号的同时读取文本文件,将二进制转为字符串,在字符串中查找有没有此卡号,如果没有就禁卡发卡。所以我的目的也就是对卡号加密,写成二进制后客户无法打开文本文件自己写入卡号。  
  字符串abc转换成二进制形式看到的就是乱码了(类似于:藦畽D虀E   )  
  我的那段代码只能将小写字母来回转换Top

6 楼xilu_gong(禄子)回复于 2005-11-21 14:33:44 得分 0

问题解决了,其实代码没问题,主要是我测试时把转出的二进制放到了TextBox框里,然后将TextBox框里的二进制数据再转成字符串。可能是由于放入TextBox的数据被系统自动转为Unicode类型,所以再转就有问题了。  
  谢谢各位!!Top

相关问题

  • 字符串转二进制
  • 高分求教:VB中字符串如何转化为二进制??急!!!
  • vb如何将字符串转化为二进制?(立即给分)
  • 如何把二进制字符串转换为ASCII字符串??
  • 怎么用VB在注册表里新建字符串值,二进制制,双字节值?
  • **** 关于将字符串写进二进制文件
  • 字符串和二进制的互换(解决一定给分)
  • 怎样将二进制转换成字符串?在线等待。。。
  • 请问二进制怎么转化成字符串?
  • 二进制的字符串如何转成十进制?

关键词

  • 二进制
  • 转换
  • 数字
  • 代码
  • 字符串
  • binarystr
  • skipflag
  • tmpbin
  • strbin
  • strc

得分解答快速导航

  • 帖主:xilu_gong
  • province_
  • northwolves
  • rainstormmaster

相关链接

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

广告也精彩

反馈

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