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

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

Да не вопрос!

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

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



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

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

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

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

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

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

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

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

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


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

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


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