Выберите исходную схему
Twitter Original соответствует архивному коду snowflake-2010. Discord использует документированный беззнаковый формат. Для своего сервиса понадобятся его эпоха и ширины полей: само число не содержит этих настроек.
Идентификаторы и время
Сначала выберите схему системы, выдавшей номер.
Все расчёты выполняются в браузере; введённые значения не отправляются.
Один десятичный ID, до 256 символов. Без URL и списков.
Twitter snowflake-2010: 41/5/5/12. Старший узел — датацентр, младший — worker; резервный знаковый бит равен 0. Открыть источник
Введите ID или загрузите пример.
Декодер Snowflake ID помогает, когда в журнале остался только идентификатор без отдельной даты создания. Для интерпретации нужна схема исходной системы. Одно число может давать правдоподобные даты при разных эпохах, поэтому сначала проверьте настройки генератора, а уже затем восстанавливайте последовательность событий.
Декодер Snowflake ID различает архивный оригинал Twitter и формат Discord. Время занимает 41 или 42 бита; две части узла также имеют разные значения. Эпоха и ссылка на первоисточник доступны рядом с настройками, чтобы проверить предпосылки расчёта.
Фиксированные время, узел и последовательность дают один и тот же тестовый ID. Сравните двоичные группы с масками приложения. В собственной схеме можно сдвинуть границу поля и увидеть, какие биты переходят в соседнее значение, не меняя рабочие записи.
Twitter Original соответствует архивному коду snowflake-2010. Discord использует документированный беззнаковый формат. Для своего сервиса понадобятся его эпоха и ширины полей: само число не содержит этих настроек.
Эпоха и время генерации задаются в миллисекундах Unix. Общий узел равен старшей части × 32 + младшей части. У Twitter это датацентр и worker, у Discord — worker и process. Метка в секундах здесь не подходит.
Автоматический разбор запускается через 350 мс после последней правки. Отключите его для кнопки или Ctrl/Cmd + Enter. Изменение параметров блокирует экспорт до успешного пересчёта. Тестовая генерация всегда выполняется явно.
Десятичная строка сразу читается как BigInt. Для Discord число 175928847299117063 даёт 2016-04-30T11:18:25.796Z, узел 32 и последовательность 7. Соседние ID остаются различимыми, даже если обычное число с плавающей точкой округлило бы их одинаково.
Временная метка выводится в UTC, миллисекундах Unix и как смещение от эпохи. Двоичные группы сохраняют ведущие нули. У Twitter отдельно показан резервный нулевой знаковый бит; Discord использует все 64 бита.
Своя эпоха и ширины полей описывают непрерывную схему: время, узел, последовательность от старших битов к младшим. Для узла и последовательности допустима нулевая ширина, но тогда значение обязано быть нулём.
Генератор Snowflake ID собирает поля и сразу разбирает получившееся число. Пустое время означает часы в момент запуска; явное значение позволяет повторить тест. Можно скопировать ID или скачать JSON-отчёт со схемой и всеми полями.
Выберите Discord и вставьте исходную строку. Декодер Snowflake ID убирает младшие 22 бита и прибавляет 1420070400000 миллисекунд. UTC в отчёте показывает записанное в числе время, не подтверждая существование сообщения отдельной проверкой.
Архивный Twitter отсчитывает от 1288834974657 мс, Discord — от 1420070400000 мс. Различается и временное поле: 41 против 42 бит. Замены одной эпохи недостаточно для полного описания другого формата.
Каждой части отведено 5 бит, то есть 0–31. Вместе они образуют 10-битный узел со значениями 0–1023. Последовательность занимает 12 бит, то есть 0–4095. Превышение отклоняется, чтобы значение не попало в соседнее поле.
Да. В своей схеме задайте знаковую эпоху Unix в миллисекундах и все три ширины. Время генерации должно быть не раньше эпохи, а разница должна помещаться в отведённое временное поле.
Это могло произойти в таблице или парсере до вставки. BigInt предотвращает новое округление, но не восстанавливает потерянные разряды. Нужна первоначальная строка ID, ещё не преобразованная в число с плавающей точкой.
Нужны уточнения по схеме?
Декодер Snowflake ID сохраняет исходные допущения вместе с расчётом. Сверьте время и младшие поля, затем приложите отчёт к заметкам об отладке.