您的位置:程序门 -> vb -> 基础类



二进制转换十六进制问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


二进制转换十六进制问题[已结贴,结贴人:tanghuawei]
发表于:2007-05-24 11:26:57 楼主
问题:
  1         0         0         0         0         0         0         0
动画   静止   保留   时间   连续   暂停   保留   闪烁
这是第一种方式:二进制的10000000,也就是十六进制的80,动画和两个保留值不变,永远是1,0,0,其他的根据用户选择而进行变动,要怎样做一个循环将这个问题做出来?

比如:动画方式:   movemothod   =   &h80
            动画闪烁:   movemothod   =   &h81
请高手帮忙,分少了再加!
发表于:2007-05-24 11:30:361楼 得分:0
位操作
发表于:2007-05-24 11:33:322楼 得分:0
怎么做?请给点代码好吗?
发表于:2007-05-24 13:41:443楼 得分:10
不用位操作,可以用以下的方式:
private   function   getdec(byval   bits   as   string)   as   byte
        dim   i   as   integer
        dim   n   as   byte
        dim   l   as   integer
        l   =   len(bits)
        for   i   =   1   to   l
                if   mid(bits,   i,   1)   =   "1 "   then   n   =   n   +   2   ^   (8   -   i)
        next   i
        getdec   =   n
end   function
假设要设置成10011001,movemothod   =   getdec( "10011001 ")
发表于:2007-05-24 13:43:244楼 得分:0
修改一下:
private   function   getdec(byval   bits   as   string)   as   byte
   
        dim   i   as   integer
        dim   n   as   byte
        dim   l   as   integer
        l   =   len(bits)
        for   i   =   1   to   l
                if   mid(bits,   i,   1)   =   "1 "   then   n   =   n   +   2   ^   (l   -   i)
        next   i
        getdec   =   n
end   function
发表于:2007-05-24 13:55:315楼 得分:0
楼上的兄弟,你是将二进制转换成十进制了!
发表于:2007-05-24 14:04:256楼 得分:0
无语
发表于:2007-05-24 14:06:437楼 得分:0
已经解决了,在网上找到了进制互换的代码,不管大家知不知道,贴出来分享一下:

'-------------------------------------------------

'   用途:将十进制转化为二进制
public   function   dec_to_bin(dec   as   long)   as   string
        dec_to_bin   =   " "
        do   while   dec   >   0
                dec_to_bin   =   dec   mod   2   &   dec_to_bin
                dec   =   dec   \   2
        loop
end   function

'   用途:将二进制转化为十进制
public   function   bin_to_dec(byval   bin   as   string)   as   long
        dim   i   as   long
        for   i   =   1   to   len(bin)
                bin_to_dec   =   bin_to_dec   *   2   +   val(mid(bin,   i,   1))
        next   i
end   function

'   用途:将十六进制转化为二进制
public   function   hex_to_bin(byval   hex   as   string)   as   string
        dim   i   as   long
        dim   b   as   string
       
        hex   =   ucase(hex)
        for   i   =   1   to   len(hex)
                select   case   mid(hex,   i,   1)
                        case   "0 ":   b   =   b   &   "0000 "
                        case   "1 ":   b   =   b   &   "0001 "
                        case   "2 ":   b   =   b   &   "0010 "
                        case   "3 ":   b   =   b   &   "0011 "
                        case   "4 ":   b   =   b   &   "0100 "
                        case   "5 ":   b   =   b   &   "0101 "
                        case   "6 ":   b   =   b   &   "0110 "
                        case   "7 ":   b   =   b   &   "0111 "
                        case   "8 ":   b   =   b   &   "1000 "
                        case   "9 ":   b   =   b   &   "1001 "
                        case   "a ":   b   =   b   &   "1010 "
                        case   "b ":   b   =   b   &   "1011 "
                        case   "c ":   b   =   b   &   "1100 "
                        case   "d ":   b   =   b   &   "1101 "
                        case   "e ":   b   =   b   &   "1110 "
                        case   "f ":   b   =   b   &   "1111 "
                end   select
        next   i
        while   left(b,   1)   =   "0 "
                b   =   right(b,   len(b)   -   1)
        wend
        hex_to_bin   =   b
end   function

'   用途:将二进制转化为十六进制
public   function   bin_to_hex(byval   bin   as   string)   as   string
        dim   i   as   long
        dim   h   as   string
        if   len(bin)   mod   4   <>   0   then
                bin   =   string(4   -   len(bin)   mod   4,   "0 ")   &   bin
        end   if
       
        for   i   =   1   to   len(bin)   step   4
                select   case   mid(bin,   i,   4)
                        case   "0000 ":   h   =   h   &   "0 "
                        case   "0001 ":   h   =   h   &   "1 "
                        case   "0010 ":   h   =   h   &   "2 "
                        case   "0011 ":   h   =   h   &   "3 "
                        case   "0100 ":   h   =   h   &   "4 "
                        case   "0101 ":   h   =   h   &   "5 "
                        case   "0110 ":   h   =   h   &   "6 "
                        case   "0111 ":   h   =   h   &   "7 "
                        case   "1000 ":   h   =   h   &   "8 "
                        case   "1001 ":   h   =   h   &   "9 "
                        case   "1010 ":   h   =   h   &   "a "
                        case   "1011 ":   h   =   h   &   "b "
                        case   "1100 ":   h   =   h   &   "c "
                        case   "1101 ":   h   =   h   &   "d "
                        case   "1110 ":   h   =   h   &   "e "
                        case   "1111 ":   h   =   h   &   "f "
                end   select
        next   i
        while   left(h,   1)   =   "0 "
                h   =   right(h,   len(h)   -   1)
        wend
        bin_to_hex   =   h
end   function

'   用途:将十六进制转化为十进制
public   function   hex_to_dec(byval   hex   as   string)   as   long
        dim   i   as   long
        dim   b   as   long
       
        hex   =   ucase(hex)
        for   i   =   1   to   len(hex)
                select   case   mid(hex,   len(hex)   -   i   +   1,   1)
                        case   "0 ":   b   =   b   +   16   ^   (i   -   1)   *   0
                        case   "1 ":   b   =   b   +   16   ^   (i   -   1)   *   1
                        case   "2 ":   b   =   b   +   16   ^   (i   -   1)   *   2
                        case   "3 ":   b   =   b   +   16   ^   (i   -   1)   *   3
                        case   "4 ":   b   =   b   +   16   ^   (i   -   1)   *   4
                        case   "5 ":   b   =   b   +   16   ^   (i   -   1)   *   5
                        case   "6 ":   b   =   b   +   16   ^   (i   -   1)   *   6
                        case   "7 ":   b   =   b   +   16   ^   (i   -   1)   *   7
                        case   "8 ":   b   =   b   +   16   ^   (i   -   1)   *   8
                        case   "9 ":   b   =   b   +   16   ^   (i   -   1)   *   9
                        case   "a ":   b   =   b   +   16   ^   (i   -   1)   *   10
                        case   "b ":   b   =   b   +   16   ^   (i   -   1)   *   11
                        case   "c ":   b   =   b   +   16   ^   (i   -   1)   *   12
                        case   "d ":   b   =   b   +   16   ^   (i   -   1)   *   13
                        case   "e ":   b   =   b   +   16   ^   (i   -   1)   *   14
                        case   "f ":   b   =   b   +   16   ^   (i   -   1)   *   15
                end   select
        next   i
        hex_to_dec   =   b
end   function
'   用途:将十进制转化为十六进制
public   function   dec_to_hex(dec   as   long)   as   string
        dim   a   as   string
        dec_to_hex   =   " "
        do   while   dec   >   0
                a   =   cstr(dec   mod   16)
                select   case   a
                        case   "10 ":   a   =   "a "
                        case   "11 ":   a   =   "b "
                        case   "12 ":   a   =   "c "
                        case   "13 ":   a   =   "d "
                        case   "14 ":   a   =   "e "
                        case   "15 ":   a   =   "f "
                end   select
                dec_to_hex   =   a   &   dec_to_hex
                dec   =   dec   \   16
        loop
end   function

'   用途:将十进制转化为八进制
public   function   dec_to_oct(dec   as   long)   as   string
        dec_to_oct   =   " "
        do   while   dec   >   0
                dec_to_oct   =   dec   mod   8   &   dec_to_oct
                dec   =   dec   \   8
        loop
end   function

'   用途:将八进制转化为十进制
public   function   oct_to_dec(byval   oct   as   string)   as   long
        dim   i   as   long
        dim   b   as   long
       
        for   i   =   1   to   len(oct)
                select   case   mid(oct,   len(oct)   -   i   +   1,   1)
                        case   "0 ":   b   =   b   +   8   ^   (i   -   1)   *   0
                        case   "1 ":   b   =   b   +   8   ^   (i   -   1)   *   1
                        case   "2 ":   b   =   b   +   8   ^   (i   -   1)   *   2
                        case   "3 ":   b   =   b   +   8   ^   (i   -   1)   *   3
                        case   "4 ":   b   =   b   +   8   ^   (i   -   1)   *   4
                        case   "5 ":   b   =   b   +   8   ^   (i   -   1)   *   5
                        case   "6 ":   b   =   b   +   8   ^   (i   -   1)   *   6
                        case   "7 ":   b   =   b   +   8   ^   (i   -   1)   *   7
                end   select
        next   i
        oct_to_dec   =   b
end   function

'   用途:将二进制转化为八进制
public   function   bin_to_oct(byval   bin   as   string)   as   string
        dim   i   as   long
        dim   h   as   string
        if   len(bin)   mod   3   <>   0   then
                bin   =   string(3   -   len(bin)   mod   3,   "0 ")   &   bin
        end   if
       
        for   i   =   1   to   len(bin)   step   3
                select   case   mid(bin,   i,   3)
                        case   "000 ":   h   =   h   &   "0 "
                        case   "001 ":   h   =   h   &   "1 "
                        case   "010 ":   h   =   h   &   "2 "
                        case   "011 ":   h   =   h   &   "3 "
                        case   "100 ":   h   =   h   &   "4 "
                        case   "101 ":   h   =   h   &   "5 "
                        case   "110 ":   h   =   h   &   "6 "
                        case   "111 ":   h   =   h   &   "7 "
                end   select
        next   i
        while   left(h,   1)   =   "0 "
                h   =   right(h,   len(h)   -   1)
        wend
        bin_to_oct   =   h
end   function

'   用途:将八进制转化为二进制
public   function   oct_to_bin(byval   oct   as   string)   as   string
        dim   i   as   long
        dim   b   as   string
       
        for   i   =   1   to   len(oct)
                select   case   mid(oct,   i,   1)
                        case   "0 ":   b   =   b   &   "000 "
                        case   "1 ":   b   =   b   &   "001 "
                        case   "2 ":   b   =   b   &   "010 "
                        case   "3 ":   b   =   b   &   "011 "
                        case   "4 ":   b   =   b   &   "100 "
                        case   "5 ":   b   =   b   &   "101 "
                        case   "6 ":   b   =   b   &   "110 "
                        case   "7 ":   b   =   b   &   "111 "
                end   select
        next   i
        while   left(b,   1)   =   "0 "
                b   =   right(b,   len(b)   -   1)
        wend
        oct_to_bin   =   b
end   function

'   用途:将八进制转化为十六进制
public   function   oct_to_hex(byval   oct   as   string)   as   string
        dim   bin   as   string
        bin   =   oct_to_bin(oct)
        oct_to_hex   =   bin_to_hex(bin)
end   function

'   用途:将十六进制转化为八进制
public   function   hex_to_oct(byval   hex   as   string)   as   string
        dim   bin   as   string
        hex   =   ucase(hex)
        bin   =   hex_to_bin(hex)
        hex_to_oct   =   bin_to_oct(bin)
end   function




快速检索

最新资讯
热门点击