10 / 10 / 5
Регистрация: 20.04.2014
Сообщений: 161
|
||||||
1 | ||||||
.NET 4.x Хеш-функция - преобразовать массив в шестнадцатибитное число14.06.2015, 21:03. Показов 2615. Ответов 7
Метки нет (Все метки)
Здравствуйте,задача: на входе байт массив(из любого файла),нужно высчитать хеш функцию(алгоритм формирования побитовое исключение ИЛИ пар байт исходного сообщения,размер хеш-функции 16 бит).Побитовое исключение сделал.Вопрос как дальше преобразовать данный массив в 16 битное число или какой шаг нужно добавить?и нужно ли что-то делать с длиной массива при чтении?
0
|
14.06.2015, 21:03 | |
Ответы с готовыми решениями:
7
Хеш-функция и вывод в ассоциативный массив Хеш-функция и вывод в ассоциативный массив Хеш, хеш-функция, хеширование и HashMap Хеш-функция и хеш-таблица |
тыжПрограммист
330 / 144 / 44
Регистрация: 21.04.2014
Сообщений: 638
|
||||||
14.06.2015, 21:59 | 2 | |||||
0
|
10 / 10 / 5
Регистрация: 20.04.2014
Сообщений: 161
|
||||||
14.06.2015, 22:40 [ТС] | 3 | |||||
LonerZzz, тогда уж
0
|
Администратор
|
||||||
14.06.2015, 22:42 | 4 | |||||
Сообщение было отмечено Ev_Hyper как решение
Решение
Salems, по моему ты неправильно реализовал расчет т.к. значение хеша изначально должно накапливаться в переменной нужной длины. У тебя же обновляются все элементы входного массива. По идее надо считать так:
1
|
10 / 10 / 5
Регистрация: 20.04.2014
Сообщений: 161
|
|
14.06.2015, 22:50 [ТС] | 5 |
OwenGlendower, больше похоже на правду,спасибо. И поясните,пожалуйста, 2 строчку: /2)*2;
0
|
Администратор
|
||||||
14.06.2015, 23:19 | 6 | |||||
Salems, вторая строка выполняет округление в нижную сторону к ближайшему четному. То есть 1001 превратится в 1000. Это упрощает код цикла. Если длина файла нечетная, то последний байт обрабатывается отдельно после цикла.
Добавлено через 14 минут Нашел ошибку в своем коде. В строке №5 надо использовать оператор побитового ИЛИ вместо сложения:
1
|
10 / 10 / 5
Регистрация: 20.04.2014
Сообщений: 161
|
|
14.06.2015, 23:56 [ТС] | 7 |
OwenGlendower, при побитовом ИЛИ на выходе не 16 число
0
|
Администратор
|
|
15.06.2015, 02:41 | 8 |
Salems, ты что-то путаешь. Объединяя два байта с помощью сдвига и ИЛИ мы получим именно 16-и битовое число.
0
|
15.06.2015, 02:41 | |
15.06.2015, 02:41 | |
Помогаю со студенческими работами здесь
8
Функция преобразовать десятичное число в шестнадцатиричное Как преобразовать число в массив? Преобразовать число в обратный массив Преобразовать число в массив байт Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |