с точки зрения вероятности?
Допустим мне нужна максимум половина по длине.
Если на половине обрезать, то нормально будет?
А можно заменить uuid на что-то другое? Чтобы изначально генерить нормальной длины с гарантированным качеством?
Можно, но на что?
а юзкейс какой? на половине скорее всего не нормально, потому что по факту получится время создания объекта в секундах
Юз кейс, чтобы some_prefix+uuid не перевалило за макс разрешенный размер поля.
Там 64 ASCII символа. Я думаю, если сократить где-то на половину uuid, то должно хватать.
размер поля - 64 бита?
64 байта. То есть 64 ASCII chars.
64 ascii символа - это 448 бит, туда 3.5 uuid без проблем влезет
до 32 символов
в 32 символа всё ещё влезает полный uuid без потерь
42e307c5-51af-4857-8b7c-6581f62b31d8 ну вот uuid на 36 символов
информации в нём - на 19 ascii символов
В asccii есть ещё заглавные буквы, которые не встречаются в текстовой репрезентации UUID
https://en.wikipedia.org/wiki/Universally_unique_identifier > A universally unique identifier (UUID) is a 128-bit label used for information in computer systems. The term globally unique identifier (GUID) is also used
и что с этим делать? Вот есть питоновская либа uuid, которая генерит uuid, который я просто конвертнул в строку.
эта? https://docs.python.org/3/library/uuid.html
Как угодно перегнать в массив аски-символов. Например, взять UUID.int и привести к 128-ричной системе счисления
In [7]: base64.b64encode(uuid.uuid4().bytes) Out[7]: b'cENuMEGyQOuxHheearowbQ=='
Или так, если идти простым путём)
чтобы в ascii, но там наверняка со спец-символами всё равно проблемы будут (особенно с нулевым). Поэтому проще base64, раз уж всё равно влезает
так в ascii 0-255 или -128-127? Тогда к 256-ричной системе счисления?
Хотя если наверняка в ascii, то 128, согласен.
Обсуждают сегодня