powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сгенерировать уникальное значение.
19 сообщений из 19, страница 1 из 1
Сгенерировать уникальное значение.
    #39624002
saxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Может кто подскажет как сделать. Есть число (long). Надо на его основе сгенерировать уникальное значение размерностью 5 байт. Спасибо.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624010
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
long это Int64, т.е. 8 байт. При такой постановке задача нерешаема.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624047
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему же? сделать битовый сдвиг на 24 позиции и будет вам 5 байт.
Другое дело, что автор не пишет, что такое уникальное значение.. Что есть уникальное значение? Оно случайно? Или необходима дополнительная проверка его уникальности (1 значение генерируется не больше 1 раза).
Самый простой способ взять дату\время, привести её к Long (внутри это значение и так Long) и получать из неё 5 байт.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624124
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesпочему же? сделать битовый сдвиг на 24 позиции и будет вам 5 байт.
Если требуется уникальность 5-байтового значения на всём диапазоне значений long, то никакие сдвиги не помогут, т.к., как выше было сказано, дипазон long шире диапазона int. Если же уникальности на всём диапазоне long не требуется, то и сдвиги не нужны - у байтового представления long выкидываем любые три понравившиеся байта, и вуаля.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624153
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Постановка вопроса вообще туманна, можно пример какой-то, что значит - на основе? Как потом планируется проверять, полученное уникальное значение на основе, или не на основе? На одном и том же значении "основы" должны быть одинаковые уникальные значения, или разные при повторном вызове метода?

Или это значит, что нужно реализовать хэш-функцию от longa, только чтоб она не int32 (4 байта) возвращала, а 5 байт?
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624167
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
saxix,

Да не вопрос!

Код: c#
1.
2.
3.
long num = 123123124; // наше число

var first_5_bytes_unique = Guid.NewGuid().ToByteArray().Take(5); // генерируем



Готово! С вас 500 рублей.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624251
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisПостановка вопроса вообще туманна, можно пример какой-то, что значит - на основе? Как потом планируется проверять, полученное уникальное значение на основе, или не на основе? На одном и том же значении "основы" должны быть одинаковые уникальные значения, или разные при повторном вызове метода?

Или это значит, что нужно реализовать хэш-функцию от longa, только чтоб она не int32 (4 байта) возвращала, а 5 байт?для проверки уникальности лучше всего подойдет бинарное дерево, как мне кажется. Оно будет гарантировать точность и скорость проверки. 5 байт это всего 20 бит фигня по сути.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624254
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes5 байт это всего 20 бит фигня по сути.
Байт нынче 4 бита?
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624270
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

ну окей 40, это сильно меняет смысл?
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624315
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman MejtesDima T,

ну окей 40, это сильно меняет смысл?
В миллион раз.
2^40 это примерно триллион
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624348
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть число из 3-х бит. Надо на основе него сгенерировать уникальное значение из 1 бита.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624428
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtesдля проверки уникальности лучше всего подойдет бинарное дерево, как мне кажется. Оно будет гарантировать точность и скорость проверки. 5 байт это всего 20 бит фигня по сути.

не понял, зачем что-то проверять, если априори на основе 8 байт лонга нельзя обеспечить уникальность 5 байт производного значения?
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624436
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в условии задачи не говорится. что результат должен быть цифрой.....
Соответственно просто переводим лонг в число большей размерности.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624439
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183А в условии задачи не говорится. что результат должен быть цифрой.....
Соответственно просто переводим лонг в число большей размерности.
И как при этом емкость байта увеличится?
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624443
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да....
Это не DBF
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624807
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T982183А в условии задачи не говорится. что результат должен быть цифрой.....
Соответственно просто переводим лонг в число большей размерности.
И как при этом емкость байта увеличится?

Запросто.
Размер long от 32 до 64 бит.
А размер байта на PDP-10 до 36 бит.
Значит даже в два байта поместится.
Нужно только правильное железо брать. :)
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624829
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikronDima Tпропущено...

И как при этом емкость байта увеличится?

Запросто.
Размер long от 32 до 64 бит.
А размер байта на PDP-10 до 36 бит.
Значит даже в два байта поместится.
Нужно только правильное железо брать. :)
В MS напиши, а то они в .NET зачем-то жестко сделали long - 64 бита, а байт - 8.

Пусть MS сначала .NET поправит под то железо
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624833
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tlong - 64 бита, а байт - 8.
...
Рейтинг: 0 / 0
Сгенерировать уникальное значение.
    #39624925
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tmikronпропущено...


Запросто.
Размер long от 32 до 64 бит.
А размер байта на PDP-10 до 36 бит.
Значит даже в два байта поместится.
Нужно только правильное железо брать. :)
В MS напиши, а то они в .NET зачем-то жестко сделали long - 64 бита, а байт - 8.

Пусть MS сначала .NET поправит под то железо
Я математик. Теоретически задача имеет решение. Практическая реализация - дело физиков.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сгенерировать уникальное значение.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]