dim s as string dim bt as long dim j as long bt=123 For j = 1 To 8 s=cstr( bt mod 2) & s bt=bt\2 Next j msgbox s
For j = 0 To 7
x = Int(bt / (2 ^ j)) Mod 2 Print x;Next j\整除号会四舍六入五留双,不是截尾。此问题我曾经发起讨论过,结果大家都不重视。嘿嘿,问题来了吧…… :D
咳,是我想复杂了,楼主的意思就是把一个255以内的整数转成2进制是吗?Private Sub Command1_Click() Dim bit(7), i As Long, bt As Byte bt = 123''''''''''' For i = 0 To 7 bit(7 - i) = bt Mod 2 bt = bt \ 2 Next i Print Join(bit, ",") End Sub
Sorry,收回上面一帖(不是这个问题,呵呵……道歉)Dim bt As Byte, j As Integer, x As Integer Dim halfBt As Integer halfBt = 0 bt = &H29
For j = 0 To 7
x = Int(bt / (2 ^ j)) Mod 2 halfBt = halfBt + ((bt \ (2 ^ j))) Mod 2) * 2 ^ j Print x; Next j Print Print halfBt Print bt主要还是j的问题,还有:你打印出来的二进制是反的,要注意了 :)
Function HexToBin(ByVal sHex As String) As String On Error GoTo errSta Dim i As Long Dim sBinStr As String If sHex = "" Then Exit Function sBinStr = "0000000100100011010001010110011110001001101010111100110111101111" For i = 1 To Len(sHex) HexToBin = HexToBin & Mid$(sBinStr, CLng("&H" & Mid$(sHex, i, 1)) * 4 + 1, 4) Next Exit Function errSta: HexToBin = "" End Function然后 sBin = HexToBin(Hex(123))然后sBin就等于01111011了
Private Sub Command1_Click() Dim bt As Byte, j As Integer, x As Integer Dim mstr As String bt = &H29 mstr = "" For j = 7 To 0 Step -1 x = (bt - (bt \ 2 ^ (j + 1)) * (2 ^ (j + 1))) \ 2 ^ j mstr = mstr & CStr(x) Next jEnd Sub mstr中是结果
for j = 0 to 7
x = ((bt-(bt\(2^(j+1))*(2^(j+1)))\(2^j)) mod 2
print x
next j
试试
Dim halfBt As Integer
halfBt = 0
bt = &H29
For j = 1 To 8
halfBt = halfBt + ((bt \ (2 ^ j)) Mod 2) * 2 ^ (8 - j)
x = (bt \ (2 ^ j)) Mod 2
Print x;
Next j
Print
Print halfBt
Print bt
打印的结果是
00101000
40
41应该是
00101001
41
41
呀。。
等待高手指教
还是不行呀
bt=bt\2Next j
dim bt as long
dim j as long
bt=123
For j = 1 To 8
s=cstr( bt mod 2) & s
bt=bt\2
Next j
msgbox s
x = Int(bt / (2 ^ j)) Mod 2
Print x;Next j\整除号会四舍六入五留双,不是截尾。此问题我曾经发起讨论过,结果大家都不重视。嘿嘿,问题来了吧…… :D
Dim bit(7), i As Long, bt As Byte
bt = 123'''''''''''
For i = 0 To 7
bit(7 - i) = bt Mod 2
bt = bt \ 2
Next i
Print Join(bit, ",")
End Sub
Dim halfBt As Integer
halfBt = 0
bt = &H29
For j = 0 To 7
x = Int(bt / (2 ^ j)) Mod 2
halfBt = halfBt + ((bt \ (2 ^ j))) Mod 2) * 2 ^ j
Print x;
Next j
Print
Print halfBt
Print bt主要还是j的问题,还有:你打印出来的二进制是反的,要注意了 :)
On Error GoTo errSta
Dim i As Long
Dim sBinStr As String
If sHex = "" Then Exit Function
sBinStr = "0000000100100011010001010110011110001001101010111100110111101111"
For i = 1 To Len(sHex)
HexToBin = HexToBin & Mid$(sBinStr, CLng("&H" & Mid$(sHex, i, 1)) * 4 + 1, 4)
Next
Exit Function
errSta:
HexToBin = ""
End Function然后
sBin = HexToBin(Hex(123))然后sBin就等于01111011了
Dim bt As Byte, j As Integer, x As Integer
Dim mstr As String
bt = &H29
mstr = ""
For j = 7 To 0 Step -1
x = (bt - (bt \ 2 ^ (j + 1)) * (2 ^ (j + 1))) \ 2 ^ j
mstr = mstr & CStr(x)
Next jEnd Sub
mstr中是结果