将任一0--255之间的整数转换为8位二进制数
例如67转化为8位二进制数为:01000011
要求算法的效率较高!~(顺便问一下,VB中有没有函数可以直接进行这样的转换!)
以下是本人的算法,但感觉效率不是很高!~
Private Sub DecimalToBinary(ByVal num As Integer) 'num为要转换的十进制数
   Dim ii As Integer, kk As Integer              'uBinary为存放转换后的8位二进制数的数组 
   
   ReDim uBinary(0)
   uBinary(0) = -1   If num = 0 Then uBinary(0) = 0
   Do Until num = 0
      If num Mod 2 = 0 Then
         num = num / 2
         If uBinary(0) = -1 Then
            uBinary(0) = 0
         Else
            ReDim Preserve uBinary(UBound(uBinary) + 1)
            uBinary(UBound(uBinary)) = 0
         End If
      Else
         num = (num - 1) / 2
         If uBinary(0) = -1 Then
            uBinary(0) = 1
         Else
            ReDim Preserve uBinary(UBound(uBinary) + 1)
            uBinary(UBound(uBinary)) = 1
         End If
      End If
   Loop
      
   kk = UBound(uBinary)
   If kk < 7 Then
      For ii = kk + 1 To 7
         ReDim Preserve uBinary(UBound(uBinary) + 1)
         uBinary(UBound(uBinary)) = 0
      Next ii
   End IfEnd Sub

解决方案 »

  1.   

    只是要固定的0~255的这些数的转换,最快的方法是列表出来。Private Function DecimalToBinary(ByVal num As Integer) as stringdim a(255) as stringa(0)="00000000"
    a(1)="00000001"
    a(2)="00000010"
    ......DecimalToBinary=a(num)end function
      

  2.   

    如果是确定0-255的话Function DecimalToBinary(ByVal num as Byte) As String
        Dim h As String
        h = Hex(num)
        DecimalToBinary = Hex2Bin(IIf(Len(h) = 1, "0", Left(h, 1))) & Hex2Bin(IIf(Len(h) = 1, h, Right(h, 1)))
    End FunctionFunction Hex2Bin(ByVal strHex As String) As String
        Select Case strHex
            Case "0"
                Hex2Bin = "0000"
            Case "1"
                Hex2Bin = "0001"
            Case "2"
                Hex2Bin = "0010"
            Case "3"
                Hex2Bin = "0011"
            Case "4"
                Hex2Bin = "0100"
            Case "5"
                Hex2Bin = "0101"
            Case "6"
                Hex2Bin = "0110"
            Case "7"
                Hex2Bin = "0111"
            Case "8"
                Hex2Bin = "1000"
            Case "9"
                Hex2Bin = "1001"
            Case "A"
                Hex2Bin = "1010"
            Case "B"
                Hex2Bin = "1011"
            Case "C"
                Hex2Bin = "1100"
            Case "D"
                Hex2Bin = "1101"
            Case "E"
                Hex2Bin = "1110"
            Case "F"
                Hex2Bin = "1111"
        End Select
    End Function
    其实,查表是最好的办法了
      

  3.   

    Function ToBin(Num As Long) As String
        Do
            ToBin = Num Mod 2 & ToBin
            Num = Num \ 2
        Loop While Num
        ToBin = Format(ToBin, "00000000")
    End FunctionPrivate Sub Command1_Click()
        MsgBox ToBin(67)
    End Sub
      

  4.   

    这样快了Dim Bin(255) As StringPrivate Sub Form_Load()
    Bin(0) = "00000000": Bin(1) = "00000001": Bin(2) = "00000010": Bin(3) = "00000011"
    Bin(4) = "00000100": Bin(5) = "00000101": Bin(6) = "00000110": Bin(7) = "00000111"
    Bin(8) = "00001000": Bin(9) = "00001001": Bin(10) = "00001010": Bin(11) = "00001011"
    Bin(12) = "00001100": Bin(13) = "00001101": Bin(14) = "00001110": Bin(15) = "00001111"
    Bin(16) = "00010000": Bin(17) = "00010001": Bin(18) = "00010010": Bin(19) = "00010011"
    Bin(20) = "00010100": Bin(21) = "00010101": Bin(22) = "00010110": Bin(23) = "00010111"
    Bin(24) = "00011000": Bin(25) = "00011001": Bin(26) = "00011010": Bin(27) = "00011011"
    Bin(28) = "00011100": Bin(29) = "00011101": Bin(30) = "00011110": Bin(31) = "00011111"
    Bin(32) = "00100000": Bin(33) = "00100001": Bin(34) = "00100010": Bin(35) = "00100011"
    Bin(36) = "00100100": Bin(37) = "00100101": Bin(38) = "00100110": Bin(39) = "00100111"
    Bin(40) = "00101000": Bin(41) = "00101001": Bin(42) = "00101010": Bin(43) = "00101011"
    Bin(44) = "00101100": Bin(45) = "00101101": Bin(46) = "00101110": Bin(47) = "00101111"
    Bin(48) = "00110000": Bin(49) = "00110001": Bin(50) = "00110010": Bin(51) = "00110011"
    Bin(52) = "00110100": Bin(53) = "00110101": Bin(54) = "00110110": Bin(55) = "00110111"
    Bin(56) = "00111000": Bin(57) = "00111001": Bin(58) = "00111010": Bin(59) = "00111011"
    Bin(60) = "00111100": Bin(61) = "00111101": Bin(62) = "00111110": Bin(63) = "00111111"
    Bin(64) = "01000000": Bin(65) = "01000001": Bin(66) = "01000010": Bin(67) = "01000011"
    Bin(68) = "01000100": Bin(69) = "01000101": Bin(70) = "01000110": Bin(71) = "01000111"
    Bin(72) = "01001000": Bin(73) = "01001001": Bin(74) = "01001010": Bin(75) = "01001011"
    Bin(76) = "01001100": Bin(77) = "01001101": Bin(78) = "01001110": Bin(79) = "01001111"
    Bin(80) = "01010000": Bin(81) = "01010001": Bin(82) = "01010010": Bin(83) = "01010011"
    Bin(84) = "01010100": Bin(85) = "01010101": Bin(86) = "01010110": Bin(87) = "01010111"
    Bin(88) = "01011000": Bin(89) = "01011001": Bin(90) = "01011010": Bin(91) = "01011011"
    Bin(92) = "01011100": Bin(93) = "01011101": Bin(94) = "01011110": Bin(95) = "01011111"
    Bin(96) = "01100000": Bin(97) = "01100001": Bin(98) = "01100010": Bin(99) = "01100011"
    Bin(100) = "01100100": Bin(101) = "01100101": Bin(102) = "01100110": Bin(103) = "01100111"
    Bin(104) = "01101000": Bin(105) = "01101001": Bin(106) = "01101010": Bin(107) = "01101011"
    Bin(108) = "01101100": Bin(109) = "01101101": Bin(110) = "01101110": Bin(111) = "01101111"
    Bin(112) = "01110000": Bin(113) = "01110001": Bin(114) = "01110010": Bin(115) = "01110011"
    Bin(116) = "01110100": Bin(117) = "01110101": Bin(118) = "01110110": Bin(119) = "01110111"
    Bin(120) = "01111000": Bin(121) = "01111001": Bin(122) = "01111010": Bin(123) = "01111011"
    Bin(124) = "01111100": Bin(125) = "01111101": Bin(126) = "01111110": Bin(127) = "01111111"
    Bin(128) = "10000000": Bin(129) = "10000001": Bin(130) = "10000010": Bin(131) = "10000011"
    Bin(132) = "10000100": Bin(133) = "10000101": Bin(134) = "10000110": Bin(135) = "10000111"
    Bin(136) = "10001000": Bin(137) = "10001001": Bin(138) = "10001010": Bin(139) = "10001011"
    Bin(140) = "10001100": Bin(141) = "10001101": Bin(142) = "10001110": Bin(143) = "10001111"
    Bin(144) = "10010000": Bin(145) = "10010001": Bin(146) = "10010010": Bin(147) = "10010011"
    Bin(148) = "10010100": Bin(149) = "10010101": Bin(150) = "10010110": Bin(151) = "10010111"
    Bin(152) = "10011000": Bin(153) = "10011001": Bin(154) = "10011010": Bin(155) = "10011011"
    Bin(156) = "10011100": Bin(157) = "10011101": Bin(158) = "10011110": Bin(159) = "10011111"
    Bin(160) = "10100000": Bin(161) = "10100001": Bin(162) = "10100010": Bin(163) = "10100011"
    Bin(164) = "10100100": Bin(165) = "10100101": Bin(166) = "10100110": Bin(167) = "10100111"
    Bin(168) = "10101000": Bin(169) = "10101001": Bin(170) = "10101010": Bin(171) = "10101011"
    Bin(172) = "10101100": Bin(173) = "10101101": Bin(174) = "10101110": Bin(175) = "10101111"
    Bin(176) = "10110000": Bin(177) = "10110001": Bin(178) = "10110010": Bin(179) = "10110011"
    Bin(180) = "10110100": Bin(181) = "10110101": Bin(182) = "10110110": Bin(183) = "10110111"
    Bin(184) = "10111000": Bin(185) = "10111001": Bin(186) = "10111010": Bin(187) = "10111011"
    Bin(188) = "10111100": Bin(189) = "10111101": Bin(190) = "10111110": Bin(191) = "10111111"
    Bin(192) = "11000000": Bin(193) = "11000001": Bin(194) = "11000010": Bin(195) = "11000011"
    Bin(196) = "11000100": Bin(197) = "11000101": Bin(198) = "11000110": Bin(199) = "11000111"
    Bin(200) = "11001000": Bin(201) = "11001001": Bin(202) = "11001010": Bin(203) = "11001011"
    Bin(204) = "11001100": Bin(205) = "11001101": Bin(206) = "11001110": Bin(207) = "11001111"
    Bin(208) = "11010000": Bin(209) = "11010001": Bin(210) = "11010010": Bin(211) = "11010011"
    Bin(212) = "11010100": Bin(213) = "11010101": Bin(214) = "11010110": Bin(215) = "11010111"
    Bin(216) = "11011000": Bin(217) = "11011001": Bin(218) = "11011010": Bin(219) = "11011011"
    Bin(220) = "11011100": Bin(221) = "11011101": Bin(222) = "11011110": Bin(223) = "11011111"
    Bin(224) = "11100000": Bin(225) = "11100001": Bin(226) = "11100010": Bin(227) = "11100011"
    Bin(228) = "11100100": Bin(229) = "11100101": Bin(230) = "11100110": Bin(231) = "11100111"
    Bin(232) = "11101000": Bin(233) = "11101001": Bin(234) = "11101010": Bin(235) = "11101011"
    Bin(236) = "11101100": Bin(237) = "11101101": Bin(238) = "11101110": Bin(239) = "11101111"
    Bin(240) = "11110000": Bin(241) = "11110001": Bin(242) = "11110010": Bin(243) = "11110011"
    Bin(244) = "11110100": Bin(245) = "11110101": Bin(246) = "11110110": Bin(247) = "11110111"
    Bin(248) = "11111000": Bin(249) = "11111001": Bin(250) = "11111010": Bin(251) = "11111011"
    Bin(252) = "11111100": Bin(253) = "11111101": Bin(254) = "11111110": Bin(255) = "11111111"
    End SubPrivate Sub Command1_Click()
        MsgBox Bin(67)
    End Sub累不累啊,哈哈