Lasse Madsen skrev:
> Hvordan møblere jeg en 24 bit variabel ud i 3 bytes f.eks.
>
> 0xFFFFFF = 0xFF, 0xFF, 0xFF osv...
>
> I dag dividere jeg men det er noget lort ... der må være en >>
> operator i VB ?
Definer "lort" i forbindelse med heltalsdivisioner...
Der er desværre ingen smarte bit-skifte operationer i VB <= 6.0, så du må
enten gå heltalsdivisionsvejen, som du formentlig allerede bruger, eller
også må du ty til at kopiere et antal bytes hukommelse fra én variabel
til en anden.
Her er et eksempel på hver metode:
Option Explicit
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(pDest As Any, pSource As Any, ByVal ByteLen As Long)
Private Type TSplit
A As Byte
B As Byte
C As Byte
D As Byte
End Type
Private ManyBits As Long
Private Split1 As TSplit
Private Split2 As TSplit
Private Sub Form_Load()
'Tallet som skal splittes op
ManyBits = &H11223344
Debug.Print Hex(ManyBits)
'Første metode - kopier 4 bytes
CopyMemory Split1, ManyBits, 4
Debug.Print Hex(Split1.A), Hex(Split1.B), Hex(Split1.C), Hex(Split1.D)
'Anden metode - heltalsdivision
Split2.A = ManyBits And &HFF
ManyBits = ManyBits \ &H100
Split2.B = ManyBits And &HFF
ManyBits = ManyBits \ &H100
Split2.C = ManyBits And &HFF
Split2.D = ManyBits \ &H100
Debug.Print Hex(Split2.A), Hex(Split2.B), Hex(Split2.C), Hex(Split2.D)
End Sub
-------
Tomas
|