Sub process_globals
Dim GSM_DEFAULT_ALPHABET_TABLE As String
GSM_DEFAULT_ALPHABET_TABLE = "@£$¥èéùìòÇ" & Chr(10) & "Øø" & Chr(13) & _
"ÅåΔ_ΦΓΛΩΠΨΣΘΞ*ÆæßÉ !" & QUOTE & "#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà"
End Sub
Sub Activity_Create(FirstTime As Boolean)
Dim data() As Byte
data = Array As Byte(0xE8, 0x32, 0x9B, 0xFD, 0x46, 0x97, 0xD9, 0xEC, 0x37)
Log(DecodeSeptets(data, 10))
End Sub
Sub DecodeSeptets(Data() As Byte, Length As Int) As String
Dim res As StringBuilder
res.Initialize
Dim i, rest, restBits As Int
Do While res.Length < Length
Dim d As Int
d = Bit.And(0xFF, Data(i))
i = i + 1
rest = Bit.Or(rest, Bit.ShiftLeft(d, restBits))
restBits = restBits + 8
Do While res.Length < Length AND restBits >= 7
Dim b As Byte
b = Bit.And(rest, 0x7F)
res.Append(GSM_DEFAULT_ALPHABET_TABLE.CharAt(b))
rest = Bit.UnsignedShiftRight(rest, 7)
restBits = restbits - 7
Loop
Loop
Return res.ToString
End Sub