/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Long til Byte
Fra : Lasse Madsen


Dato : 15-08-05 16:38

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
?

M.v.h.
Lasse Madsen



 
 
Tomas Christiansen (15-08-2005)
Kommentar
Fra : Tomas Christiansen


Dato : 15-08-05 21:08

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

Søg
Reklame
Statistik
Spørgsmål : 177438
Tips : 31962
Nyheder : 719565
Indlæg : 6408043
Brugere : 218879

Månedens bedste
Årets bedste
Sidste års bedste