CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

这个问题用C很容易解决,但是我对VB一窍不通,怎么解决?

楼主Rudy_zhuang(风筝)2005-08-02 21:40:22 在 VB / 基础类 提问

问题:读一个文本文件,以二进制输出(实际上是十六进制)。  
  如,一个以ascii编码的文件内容为   "abc   测",   我要输出显示为"61   62   63   B2   E2".  
  本来我想这样做的:  
  Private   Sub   Text1_Change()  
           
          Text2.Text   =   ""  
           
          For   i   =   1   To   Len(Text1.Text)  
                  bChar   =   MidB(Text1.Text,   i,   1)  
                  c   =   Int(Asc(bChar)   /   16)   &   (Asc(bChar)   Mod   16)  
                  Text2.Text   =   Text2.Text   +   "   "   +   c  
          Next   i  
          Text2.Refresh  
  End   Sub  
  但是MidB这句话有错,如果用Mid,对于中文又无法辨认。请VB版的高手指点一下,谢谢! 问题点数:50、回复次数:8Top

1 楼yunyu97()回复于 2005-08-02 23:58:41 得分 30

Private   Sub   Text1_Change()  
  Dim   bytData()   As   Byte  
  Dim   i   As   Long  
          Text2.Text   =   ""  
          If   Text1.Text   =   ""   Then  
                  Exit   Sub  
          End   If  
          bytData   =   StrConv(Text1.Text,   vbFromUnicode)  
          Text2.SelText   =   Hex(bytData(0))  
          For   i   =   1   To   UBound(bytData)  
                  Text2.SelText   =   "   "  
                  Text2.SelText   =   Hex(bytData(i))  
          Next   i  
  End   SubTop

2 楼aohan(aohan)回复于 2005-08-03 00:21:44 得分 2

同意Top

3 楼yankao(努力学习,做个好人!)回复于 2005-08-03 07:53:54 得分 2

路过学习!  
  Top

4 楼alianc(alianc)回复于 2005-08-03 09:16:42 得分 2

路过,我是来学习的,大家继续Top

5 楼MagicianLiu(魔术师·刘)回复于 2005-08-03 09:37:47 得分 14

用二进制读取出对应字节的数值,然后转换成16进制  
  Private   Declare   Function   lopen   Lib   "kernel32"   Alias   "_lopen"   (ByVal   lpPathName   As   String,   ByVal   iReadWrite   As   Long)   As   Long  
  Private   Declare   Function   lread   Lib   "kernel32"   Alias   "_lread"   (ByVal   hFile   As   Long,   lpBuffer   As   Any,   ByVal   wBytes   As   Long)   As   Long  
  Private   Declare   Function   lclose   Lib   "kernel32"   Alias   "_lclose"   (ByVal   hFile   As   Long)   As   Long  
   
  Const   READAPI   =   0                 '     Flags   for   _lopen  
  Const   WRITEAPI   =   1  
  Const   READ_WRITE   =   2  
   
  Private   Sub   Form_Load()  
          Dim   hFile   As   Long  
          Dim   FLen   As   Long  
          Dim   str   As   String  
          Dim   lBuffer   As   Long  
          Dim   i   As   Long  
          i   =   1  
         
          FLen   =   FileLen("C:\2.txt")  
          hFile   =   lopen("C:\2.txt",   READAPI)  
          If   IsNumeric(hFile)   Then   '如果打开成功  
                  While   i   <=   FLen  
                          lread   hFile,   lBuffer,   1  
                          str   =   str   &   "   "   &   Hex(lBuffer)  
                          i   =   i   +   1  
                  Wend  
                  MsgBox   str  
          End   If  
  End   SubTop

6 楼of123()回复于 2005-08-03 10:50:57 得分 0

Private   Sub   Text1_Change()  
           
          Text2.Text   =   ""  
           
          For   i   =   1   To   Len(Text1.Text)  
                  intChar   =   MidB(Text1.Text,   i,   1)  
                  strTmp   =   Hex(intChar)  
                  If   intChar   <   0   Then   '双字节文字  
                          Text2.Text   =   Text2.Text   +   "   "   +   Left(strTmp,   2)   +   "   "   +   mid(strTmp,   3,2)  
                  Else    
                          Text2.Text   =   Text2.Text   +   "   "   +   strTmp  
                  End   If  
          Next   i  
          Text2.Refresh  
  End   Sub  
  Top

7 楼of123()回复于 2005-08-03 10:54:10 得分 0

更正,不要用   MidB:  
  Private   Sub   Text1_Change()  
           
          Text2.Text   =   ""  
           
          For   i   =   1   To   Len(Text1.Text)  
                  intChar   =   Chr(Mid(Text1.Text,   i,   1))  
                  strTmp   =   Hex(intChar)  
                  If   intChar   <   0   Then   '双字节文字  
                          Text2.Text   =   Text2.Text   +   "   "   +   Left(strTmp,   2)   +   "   "   +   Mid(strTmp,   3,2)  
                  Else    
                          Text2.Text   =   Text2.Text   +   "   "   +   strTmp  
                  End   If  
          Next   i  
          Text2.Refresh  
  End   Sub  
  Top

8 楼of123()回复于 2005-08-03 10:55:25 得分 0

还是忙中出错:  
  intChar   =   Asc(Mid(Text1.Text,   i,   1))  
  Top

相关问题

  • 诚心拜师!!------一个想学C++,但一窍不通的我~~~~
  • solaris开发一窍不通,如何开发Solaris下的c程序?
  • 那里有VB入门的好书.事先声明我对编程一窍不通.(最好是电子书.本人对赚钱也一窍不通)
  • C+VB?
  • vb to c#
  • 我是asp.net的初学者,以前一直作c/s,现在要开始作b/s了,但我不会作网页,对asp.net也一窍不通,希望大家给我点意见让我尽快入门,推荐
  • 请问c#和vB
  • VB转C#问题
  • 快来帮帮忙呀!!iis一窍不通却要建web!!!!
  • 惭愧:我对WebService几乎都懂,只有一窍不通

关键词

  • bytdata
  • seltext
  • lopen
  • bchar
  • hfile
  • byval
  • dim
  • kernel32
  • sub
  • alias

得分解答快速导航

  • 帖主:Rudy_zhuang
  • yunyu97
  • aohan
  • yankao
  • alianc
  • MagicianLiu

相关链接

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

广告也精彩

反馈

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