VBA Tipp: Bytes vertauschen

Aus DBWiki
Wechseln zu: Navigation, Suche

Problem

Ich möchte die Bytes in einer ganzen Zahl (Long oder Integer) vertauschen.

Lösung

Das geht mit den folgenden Funktionen

Public Function IntegerSwapBytes(ByVal IntegerValue As Integer) As Integer
   Dim it  As IntType
   Dim tbt As TwoBytes
   Dim b   As Byte
 
   it.Value = IntegerValue
   LSet tbt = it
   With tbt
      b = .Value(0)
      .Value(0) = .Value(1)
      .Value(1) = b
   End With
   LSet it = tbt
   IntegerSwapBytes = it.Value
End Function
 
Public Function LongSwapBytes(ByVal LongValue As Long) As Long
   Dim lt  As LongType
   Dim fbt As FourBytes
   Dim b   As Byte
 
   lt.Value = LongValue
   LSet fbt = lt
   With fbt
      b = .Value(0)
      .Value(0) = .Value(3)
      .Value(3) = b
      b = .Value(1)
      .Value(1) = .Value(2)
      .Value(2) = b
   End With
   LSet lt = fbt
   LongSwapBytes = lt.Value
End Function

Aufruf

   Debug.Print Hex$(LongSwapBytes(&HAABBCCDD))
   'Rückgabe: DDCCBBAA


Weblinks