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

请问如何把一个二进制数组转化成十进制

楼主chen2831278(云)2005-09-22 15:55:52 在 VB / 基础类 提问

有一个类似这样的二进制数组  
  1100010010100  
  1000011010101  
  0010101011101  
  要求8位一读 转化成十进制如何转化 问题点数:40、回复次数:26Top

1 楼chen2831278(云)回复于 2005-09-22 16:06:18 得分 0

dingTop

2 楼viena(维也纳N02)回复于 2005-09-22 16:10:05 得分 0

查表,一一对应  
  Top

3 楼viena(维也纳N02)回复于 2005-09-22 16:12:06 得分 5

00000000   0  
  00000001   1  
  00000010   2  
  ……  
  11111111   255  
   
  不过256个而已,呵呵,不算多Top

4 楼chen2831278(云)回复于 2005-09-22 16:19:50 得分 0

不明白啊Top

5 楼colon78()回复于 2005-09-22 16:22:14 得分 0

fgfTop

6 楼chen2831278(云)回复于 2005-09-22 16:27:10 得分 0

俺是超级菜鸟 楼上说的俺都不知道啊Top

7 楼chen2831278(云)回复于 2005-09-22 16:54:00 得分 0

顶Top

8 楼viena(维也纳N02)回复于 2005-09-22 16:56:12 得分 0

你的数组是什么数据类型呢?Top

9 楼viena(维也纳N02)回复于 2005-09-22 17:00:54 得分 0

你不说清楚,别人也没法帮你  
  是二进制数据(VB中一般用Byte数组来存储二进制数据)  
  还是保存"0"或"1"的字符串数组,数组元素是字符串吗?  
  我看你写了三行,每行13位二进制,是什么意思?Top

10 楼viena(维也纳N02)回复于 2005-09-22 17:07:33 得分 0

二进制字符串先转为16进制字符串比较方便,每4位分组,按下表转换为16进制  
  0000   0  
  0001   1  
  0010   2  
  0011   3  
  0100   4  
  0101   5  
  0110   6  
  0111   7  
  1000   8  
  1001   9  
  1010   A  
  1011   B  
  1100   C  
  1101   D  
  1110   E  
  1111   FTop

11 楼chen2831278(云)回复于 2005-09-22 17:14:02 得分 0

哦 我那个是随手打的 是这个程序求得的  
  Public   Sub   CreateART()  
  Dim   R   As   Long,   G   As   Long,   B   As   Long,   x   As   Long,   y   As   Long  
  Dim   rR   As   Single,   rG   As   Single,   rB   As   Single  
  Dim   L   As   Long,   Max   As   Single,   Min   As   Single,   s   As   String  
  Dim   N   As   Single,   GD()   As   Integer  
    CancelDraw   =   False  
    ResetDraw   =   False  
    ImageFrm.Pic.ScaleMode   =   vbPixels  
  ReDim   GD(0   To   ImageFrm.Pic.ScaleWidth   -   1,   0   To   ImageFrm.Pic.ScaleHeight   -   1)  
  For   y   =   0   To   ImageFrm.Pic.ScaleHeight   -   1  
  For   x   =   0   To   ImageFrm.Pic.ScaleWidth   -   1   '扫描所有像  
    L   =   ImageFrm.Pic.Point(x,   y)  
    R   =   L   And   256  
    G   =   L   And   65280  
    B   =   L   And   16711680  
    rR   =   R   /   255:   rG   =   G   /   255:   rB   =   B   /   255  
    Max   =   Maximum(rR,   rG,   rB)  
    Min   =   Minimum(rR,   rG,   rB)  
    N   =   (Max   +   Min)   /   2  
  If   N   <=   0.5   Then  
      GD(x,   y)   =   0  
  Else  
      GD(x,   y)   =   1  
  End   If  
    Next   x  
    Next   y  
  Top

12 楼chen2831278(云)回复于 2005-09-22 17:15:01 得分 0

我知道则么算 可不知道用程序则么编 汗 学的很不好Top

13 楼benyfeifei(狒狒)回复于 2005-09-22 17:30:05 得分 0

呵呵,楼主的问题还没有搞定呢。下班了,晚上有空帮你看看吧。Top

14 楼viena(维也纳N02)回复于 2005-09-22 17:32:46 得分 0

不是“8位一读”吗?循环累加就可以了  
  定义一个整数N  
  判断第一位,如果是0,什么也不做,如果是1,N+128  
  第二位,N+64  
  三N+32  
  四N+16  
  五N+8  
  六N+4  
  七N+2  
  八N+1  
  最后得到的N就是这8位对应的数值(也不是10进制,计算机里的数都是二进制,但用CStr()函数转换为字符串就是十进制了)Top

15 楼chen2831278(云)回复于 2005-09-22 17:36:39 得分 0

回复人:   benyfeifei(狒狒)   (   )   信誉:100    
  好 这是另一个问题了 呵呵 我太笨了 一点都不会Top

16 楼chen2831278(云)回复于 2005-09-22 17:39:50 得分 0

回复人:   viena(维也纳nn-实心木头人)   (   )   信誉:100    
  恩我去试试看 8位一读 读取字符串是不是用MID()啊Top

17 楼viena(维也纳N02)回复于 2005-09-22 17:45:11 得分 0

咦,不是Integer数组吗?怎么又成字符串了?Top

18 楼chen2831278(云)回复于 2005-09-22 17:58:10 得分 0

啊 打错了 打错了Top

19 楼chen2831278(云)回复于 2005-09-22 17:58:32 得分 0

是数组Top

20 楼chen2831278(云)回复于 2005-09-23 08:10:28 得分 0

dingTop

21 楼domhuang(不名)回复于 2005-09-23 08:48:33 得分 0

从底位到高位     第一位是   2的0次方       第2位是2的一次方         第3位是2的2次方   如此推下去  
   
   
  该位为0不相加       1的时候相加         做到最高位就可以了  
     
  不管你多少位都可以    
   
  Top

22 楼chen2831278(云)回复于 2005-09-23 09:04:29 得分 0

晕了 跟前面大侠说的一样 我则么获取8位呢Top

23 楼benyfeifei(狒狒)回复于 2005-09-23 09:28:51 得分 30

'看看下面的算法吧,没测试过  
  Private   Sub   Command1_Click()  
   
  Dim   GD(0   To   99,   0   To   99)   As   Integer  
  Dim   result()   As   Byte  
  Dim   bytResult   As   Byte  
  Dim   lngRank   As   Long  
   
  '先求出原始矩阵的秩  
  lngRank   =   UBound(GD,   1)   -   LBound(GD,   1)   +   1  
  lngRank   =   lngRank   *   (UBound(GD,   2)   -   LBound(GD,   2)   +   1)  
   
  '判断秩是不是8的倍数  
  If   (lngRank   Mod   8)   <>   0   Then  
          ReDim   result(0   To   CLng(lngRank   \   8))  
  Else  
          ReDim   result(0   To   CLng(lngRank   \   8)   -   1)  
  End   If  
   
  Dim   i   As   Long,   j   As   Long,   k   As   Long  
   
  Dim   m   As   Integer  
   
  j   =   0:   k   =   0  
   
  For   i   =   LBound(result)   To   UBound(result)  
   
          bytResult   =   0  
           
          For   m   =   0   To   7  
                  bytResult   =   bytResult   +   GD(j,   k)   *   2   ^   m  
                  k   =   k   +   1  
                   
                  If   k   >   UBound(GD,   2)   Then       '如果超过了列数,则指向下一行  
                   
                          k   =   0  
                          j   =   j   +   1:   If   j   >   UBound(GD,   1)   Then   Exit   For  
                  End   If  
          Next  
   
          result(i)   =   bytResult  
  Next  
  End   SubTop

24 楼chen2831278(云)回复于 2005-09-23 09:59:52 得分 0

顶一下Top

25 楼chen2831278(云)回复于 2005-09-23 15:17:48 得分 0

为什么Dim   GD(0   To   99,   0   To   99)   As   Integer 是0到99Top

26 楼IvyAngta(我爱编程!谎话?)回复于 2005-09-23 15:52:18 得分 5

利用最原始的方法,从二进制和十进制之间的转换原则入手!每次读取8个二进制字符入一个只可以存8   个字符的数组中,再从右往左加数据,不管是不是0   ,都是用2的n次方和当前位置的0/1相乘(N当然是目前的从右往左数位置-1),这么做上来不就可以了!然后再重复重复再重复,就可以完成了!当然最后一段可能没有达到8个位置长度,所以在每次计算结束时都要清空这个数组或是赋一个不是0、1的字符,在每次计算之前都要判断,当前这个位置上的数字是不是0或是1,是则开始计算,否则就继续左移。Top

相关问题

  • 十进制转化为二进制问题--100分!
  • 十进制数转化成二进制用什么函数
  • 如何将十进制字符转化成二进制字符
  • 十进制数与二进制数如何转化?
  • 怎么样把十进制数转化为二进制的数java实现
  • 二进制转换成十进制
  • 急!二进制转成十进制!
  • vb中有什么函数可以将十进制数转化为二进制数?急
  • 怎样判断一个十进制的数(可能是小数)转化成二进制后的位数
  • 将十进制数转化为二进制数的完整算法(包括正负实数)?100分送上?

关键词

  • 二进制
  • 转化
  • 字符
  • 数据
  • 数组
  • imagefrm
  • 十进制
  • 字符串
  • bytresult
  • gd

得分解答快速导航

  • 帖主:chen2831278
  • viena
  • benyfeifei
  • IvyAngta

相关链接

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

广告也精彩

反馈

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