Я пытаюсь эмулировать, как приложение C # преобразует UUID в значение Base64. По какой-то причине я могу получить часть строки, соответствующую ожидаемому значению, но не всю строку.
Код C #, который мне дали:
public static string ToShortGuid(this Guid newGuid) {
string modifiedBase64 = Convert.ToBase64String(newGuid.ToByteArray())
.Replace('+', '-').Replace('/', '_') // avoid invalid URL characters
.Substring(0, 22);
return modifiedBase64;
}
Что я пробовал в Python 3.6:
import uuid
import base64
encode_str = = base64.urlsafe_b64encode(uuid.UUID("fa190535-6b00-4452-8ab1-319c73082b60").bytes)
print(encode_str)
"fa190535-6b00-4452-8ab1-319c73082b60" является известным UUID, и приложение, очевидно, использует указанный выше код c # для генерации значения ShortGuid для "NQUZ-gBrUkSKsTGccwgrYA".
Когда я обрабатываю тот же UUID через мой код Python, я получаю: "-hkFNWsARFKKsTGccwgrYA =="
Из обеих этих выходных строк эта часть соответствует: «KsTGccwgrYA», а остальные нет.