将任一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
例如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
a(1)="00000001"
a(2)="00000010"
......DecimalToBinary=a(num)end function
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
其实,查表是最好的办法了
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
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累不累啊,哈哈