Hi,
ich denke die Überschrift sagt eigentlich schon mein Problem.
Hier die Definition eines Synchsafe Integers:
Ich habe bereits folgende Funktion für die andere Richtung:
Aber beim Konvertieren in einen Synchsafe Integer stehe ich gerade auf dem Schlauch. Hier habe ich bereits folgende Funktion, die aber meiner Meinung nach, alles andere als optimal ist:
Wäre nett wenn ihr mir helfen könntet.
ich denke die Überschrift sagt eigentlich schon mein Problem.
Hier die Definition eines Synchsafe Integers:
Synchsafe integers are
integers that keep its highest bit (bit 7) zeroed, making seven bits
out of eight available. Thus a 32 bit synchsafe integer can store 28
bits of information.
Example:
255 (%11111111) encoded as a 16 bit synchsafe integer is 383
(%00000001 01111111).
Ich habe bereits folgende Funktion für die andere Richtung:
Aber beim Konvertieren in einen Synchsafe Integer stehe ich gerade auf dem Schlauch. Hier habe ich bereits folgende Funktion, die aber meiner Meinung nach, alles andere als optimal ist:
VB.NET-Quellcode
- Public Shared Function NormalIntToSynchsafeInt(ByVal Value As UInteger) As UInteger
- Dim Res As UInteger
- Dim CurrentDestBit As UInteger
- For CurrentSourceBit As UInteger = 0 To 31
- If CurrentSourceBit Mod 7 = 0 Then CurrentDestBit += 1UI
- SetBit(Res, GetBit(Value, CurrentSourceBit), CurrentDestBit)
- CurrentDestBit += 1UI
- Next
- Return Res
- End Function
- Public Shared Sub SetBit(ByRef Source As UInteger, ByVal Value As Boolean, ByVal Index As UInteger)
- If Value Then
- Index = CUInt(2 ^ Index)
- Source = Source Or Index
- Else
- Index = Not CUInt(2 ^ Index)
- Source = Source And Index
- End If
- End Sub
Wäre nett wenn ihr mir helfen könntet.