![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| DissDoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
Вообщем, читаю побайтно файл. И беру значение каждого байта в 16ричном виде... Так вот. Сразу вопросы
1. Туплю - как в long int прибавлять значения байтов. ну т.е. в long int прибавлять 16ричное значение значение (или же все-таки байты???) Как? 2. если long int переполнен - то сдвинуть на 1 значение - а остальные биты обнулить 3. Получить из long int 16ричное значение... в виде 0xZZZZZZZZZZZZZZZZ |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Что ты вообще подразумеваешь под беру значение каждого байта в 16ричном виде? В виде строки, что ли?
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| DissDoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
да. в виде строки ))
|
|||
|
||||
| Metal_Heart |
|
||||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
DissDoc, если я тебя правильно понял:
1).
2). чего? куда? а главное, зачем? 3).
Это сообщение отредактировал(а) Metal_Heart - 6.6.2007, 13:12 -------------------- не стыдно учиться, а стыдно не учиться |
||||
|
|||||
| DissDoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
2) Сделано для того, что не хватает длины строки =\ нуно 16 символов при переводе из лонга в строку сделать =)
|
|||
|
||||
| Metal_Heart |
|
||||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
подозреваю, что это понятно только тебе:
Ты приведи пример или алгоритм действий. -------------------- не стыдно учиться, а стыдно не учиться |
||||
|
|||||
| DissDoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
Алгоритм таков:
читаю файл побайтно и складываю эти байты в лонг. В результате получаю число... но оно по длине (количество символов) оказалось небольшое. Нужно длину как бы числа в 16 символов. Вопрос (проблема) нужно сделать 16 символов... Вот я глупо и предположил сделать так грубо говоря имеем 0x0000000000000000 начинаем к лонгу прибавлять байты, как только лонг заполнился - то его обнуляем, а в итог пишем 0хf00000000000000 ну и так далее... Ну у нас в результате все равно какое-то число будет в лонге, в результате получаем что-то вроде (жирным выделено итоговое значение лонга) 0xff4957dc89000000 НО! Это ужасный способ. Я и спрашиваю как лучше сделать? Это сообщение отредактировал(а) DissDoc - 6.6.2007, 13:36 |
|||
|
||||
| Metal_Heart |
|
||||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
т.е. при переполнении лонга ты в него пишешь какое-то абстрактное число, далее ты к этому абстр. числу прибавляешь ещё что-то. А если он опять переполнится? Странно всё это, как-будто тебе совсем не важно что у тебя в лонге хранится. Как ты думаешь, а сколько тебе байтов надо сложить, чтоб этот лонг переполнился? По моим подсчетам (возьмем только положительный ряд), если ты будешь к этому лонгу (который был пуст в начале) прибавлять байт, равный "0xFF" тебе придется выполнить 36 170 086 419 038 336 операций (в десятичной системе счисления). Но если всё же лонг тебе мал, используй два лонга, три, сколько потребуется требуется:
Это сообщение отредактировал(а) Metal_Heart - 6.6.2007, 14:06 -------------------- не стыдно учиться, а стыдно не учиться |
||||
|
|||||
| DissDoc |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 463 Регистрация: 13.7.2006 Репутация: нет Всего: нет |
Да, я это понимаю..
Мне по сути не важно что в лонге храниться =) Я понимаю что у меня идея - хлам. Но больше идей в голове нет =\ Просто не знаю как еще можно получить 16 символов ( |
|||
|
||||
| nornad |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1079 Регистрация: 16.2.2007 Где: в Караганде Репутация: 16 Всего: 31 |
DissDoc, я так понимаю, ты пытаешься сделать что-то вроде хэш-функции. Причём, в жутко извращённом виде.
Ну да ладно, проблема не в функции, а, судя по твоим словам, в том, что ты не знаешь, как получить из лонга (который плюсуешь) hex-строку из 18 символов (считая 0х). Но тебе же уже предложили вариант ([B]Metal_Heart[/B])... Если результирующее значение меньшей длины, чем надо, то ты легко можешь добавить нули:
Предупреждаю - код сильно неоптимален (надо использовать StringBuffer), но принцип понять легко. -------------------- Три достоинства программиста: Леность, Нетерпение и Гордость Ларри Уолл |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |