Страница: 1 |
Как разбить байт на биты? Есть значение 0x08, оно разбивается на 0000 0100, но как с помощью VB? Кодом, если можете.
Пригодится? Option Explicit Sub Main() ' convert from decimal to binary Function Bin(ByVal value As Long, Optional digits As Long = -1) As String ' Raise 2 to a power Function Power2(ByVal exponent As Long) As Long Страница: 1 |
Вопрос: бит
Добавлено: 02.06.03 12:34
Автор вопроса: Stick | Web-сайт:
Ответы
Всего ответов: 2
Номер ответа: 1
Автор ответа:
ZeroX
ICQ: 220401330
Вопросов: 47
Ответов: 406
Профиль | | #1
Добавлено: 02.06.03 12:39
Попробуй переводить в двоичную систему исчесления
Номер ответа: 2
Автор ответа:
hedgehog
ICQ: 175571327
Вопросов: 15
Ответов: 207
Web-сайт:
Профиль | | #2
Добавлено: 02.06.03 12:41
Debug.Print Bin(8, 8)
Stop
End Sub
' if you pass the Digits argument, the result is truncated
' to that number of digits
'
' NOTE: requires Power2()
Dim result As String, exponent As Integer
' this is faster than creating the string by appending chars
result = String$(32, "0")
Do
If value And Power2(exponent) Then
' we found a bit that is set, clear it
Mid$(result, 32 - exponent, 1) = "1"
value = value Xor Power2(exponent)
End If
exponent = exponent + 1
Loop While value
If digits < 0 Then
' trim non significant digits, if digits was omitted or negative
Bin = Mid$(result, 33 - exponent)
Else
' else trim to the requested number of digits
Bin = Right$(result, digits)
End If
End Function
' the exponent must be in the range [0,31]
Static res(0 To 31) As Long
Dim i As Long
' rule out errors
If exponent < 0 Or exponent > 31 Then Err.Raise 5
' initialize the array at the first call
If res(0) = 0 Then
res(0) = 1
For i = 1 To 30
res(i) = res(i - 1) * 2
Next
' this is a special case
res(31) = &H80000000
End If
' return the result
Power2 = res(exponent)
End Function