Der höchste Datumswert in numerischer Form 999912312359
passt in ein Double, und wenn in Base36 konvertiert würde Zeichenfolge "CRCPZ21Z"
ausgeben, die Ihre Anforderung erfüllt.
Mit dem Encoder-Funktion here und diese Decoder:
Function base36decode(ByRef base36 As String) As Double
Const alphabet As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
base36decode = InStr(1, alphabet, Right(base36, 1), vbTextCompare) - 1
For i = Len(base36) - 1 To 1 Step -1
base36decode = base36decode + 36^(Len(base36) - i) * (InStr(1, alphabet, Mid(base36, i, 1)) - 1)
Next i
End Function
Sie können:
x = ConvertBase10(999912312359, "ABCDEFGHIJKLMNOPQRSTUVWXYZ")
?x
CRCPZ21Z
?base36decode((x))
999912312359
Dies ist Codierung, keine Verschlüsselung. Für schwache Verschleierung einfach die Reihenfolge der Zeichen in der Alphabet-Zeichenfolge, die jede Routine verwendet oder einige willkürliche Arithmetik auf den Eingabewert zu wechseln.
Es wird nicht passen. Der Datentyp "Datum" benötigt 64 Bit, aber Sie haben nur etwas weniger als 48 Bit Speicherplatz (vorausgesetzt, Groß- und Kleinschreibung und Ziffern 0-9). – Bob77
Ich konnte Datum und Codierung nicht nur Zeit, ich. e. "1247". – Polarix