|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Добрый день. Может кто подскажет как сделать. Есть число (long). Надо на его основе сгенерировать уникальное значение размерностью 5 байт. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 09:02 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
long это Int64, т.е. 8 байт. При такой постановке задача нерешаема. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 09:12 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
почему же? сделать битовый сдвиг на 24 позиции и будет вам 5 байт. Другое дело, что автор не пишет, что такое уникальное значение.. Что есть уникальное значение? Оно случайно? Или необходима дополнительная проверка его уникальности (1 значение генерируется не больше 1 раза). Самый простой способ взять дату\время, привести её к Long (внутри это значение и так Long) и получать из неё 5 байт. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 10:32 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Roman Mejtesпочему же? сделать битовый сдвиг на 24 позиции и будет вам 5 байт. Если требуется уникальность 5-байтового значения на всём диапазоне значений long, то никакие сдвиги не помогут, т.к., как выше было сказано, дипазон long шире диапазона int. Если же уникальности на всём диапазоне long не требуется, то и сдвиги не нужны - у байтового представления long выкидываем любые три понравившиеся байта, и вуаля. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 12:30 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Постановка вопроса вообще туманна, можно пример какой-то, что значит - на основе? Как потом планируется проверять, полученное уникальное значение на основе, или не на основе? На одном и том же значении "основы" должны быть одинаковые уникальные значения, или разные при повторном вызове метода? Или это значит, что нужно реализовать хэш-функцию от longa, только чтоб она не int32 (4 байта) возвращала, а 5 байт? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 13:12 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
saxix, Да не вопрос! Код: c# 1. 2. 3.
Готово! С вас 500 рублей. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 13:30 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
PallarisПостановка вопроса вообще туманна, можно пример какой-то, что значит - на основе? Как потом планируется проверять, полученное уникальное значение на основе, или не на основе? На одном и том же значении "основы" должны быть одинаковые уникальные значения, или разные при повторном вызове метода? Или это значит, что нужно реализовать хэш-функцию от longa, только чтоб она не int32 (4 байта) возвращала, а 5 байт?для проверки уникальности лучше всего подойдет бинарное дерево, как мне кажется. Оно будет гарантировать точность и скорость проверки. 5 байт это всего 20 бит фигня по сути. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 16:11 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Roman Mejtes5 байт это всего 20 бит фигня по сути. Байт нынче 4 бита? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 16:17 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Dima T, ну окей 40, это сильно меняет смысл? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 16:57 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Roman MejtesDima T, ну окей 40, это сильно меняет смысл? В миллион раз. 2^40 это примерно триллион ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 18:25 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Есть число из 3-х бит. Надо на основе него сгенерировать уникальное значение из 1 бита. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.04.2018, 20:33 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Roman Mejtesдля проверки уникальности лучше всего подойдет бинарное дерево, как мне кажется. Оно будет гарантировать точность и скорость проверки. 5 байт это всего 20 бит фигня по сути. не понял, зачем что-то проверять, если априори на основе 8 байт лонга нельзя обеспечить уникальность 5 байт производного значения? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 07:13 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
А в условии задачи не говорится. что результат должен быть цифрой..... Соответственно просто переводим лонг в число большей размерности. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 07:23 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
982183А в условии задачи не говорится. что результат должен быть цифрой..... Соответственно просто переводим лонг в число большей размерности. И как при этом емкость байта увеличится? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 07:32 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Ну да.... Это не DBF ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 07:36 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Dima T982183А в условии задачи не говорится. что результат должен быть цифрой..... Соответственно просто переводим лонг в число большей размерности. И как при этом емкость байта увеличится? Запросто. Размер long от 32 до 64 бит. А размер байта на PDP-10 до 36 бит. Значит даже в два байта поместится. Нужно только правильное железо брать. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 14:01 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
mikronDima Tпропущено... И как при этом емкость байта увеличится? Запросто. Размер long от 32 до 64 бит. А размер байта на PDP-10 до 36 бит. Значит даже в два байта поместится. Нужно только правильное железо брать. :) В MS напиши, а то они в .NET зачем-то жестко сделали long - 64 бита, а байт - 8. Пусть MS сначала .NET поправит под то железо ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 14:17 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Dima Tlong - 64 бита, а байт - 8. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 14:20 |
|
Сгенерировать уникальное значение.
|
|||
---|---|---|---|
#18+
Dima Tmikronпропущено... Запросто. Размер long от 32 до 64 бит. А размер байта на PDP-10 до 36 бит. Значит даже в два байта поместится. Нужно только правильное железо брать. :) В MS напиши, а то они в .NET зачем-то жестко сделали long - 64 бита, а байт - 8. Пусть MS сначала .NET поправит под то железо Я математик. Теоретически задача имеет решение. Практическая реализация - дело физиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.04.2018, 15:11 |
|
|
start [/forum/topic.php?fid=20&msg=39624167&tid=1399438]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 298ms |
total: | 461ms |
0 / 0 |