Перейти к публикации
Иваси

Вопрос программистам

    Рекомендованные сообщения

    • Откуда: Питер
    • Машина: Toyota Voyager

    Вопщем есть задача рассчитать контрольную сумму в текстовом файле. Условия для расчета такие:

    Контрольная сумма рассчитываются беззнаковым 16-разрядным суммированием содержимого файла между первой открывающейся и последней закрывающейся квадратной скобкой (суммированием по модулю 65536), включая сами скобки и символы-разделители. Т.е. суммируется первый байт ("[") затем следующий, помноженный на 256, затем третий, затем четвертый помноженный на 256 и.т.д. до последней закрывающейся скобки. В случае, если в процессе суммирования сумма превысит 65535, от этой суммы вычитается 65536. ph34r.gif

    я не понял ничего. tormoz.gif скачал какую-то программку для расчета контрольных сумм. попробовал посчитать сумму в файле уже посчитанном кем-то как-то:сумма получилось совсем не такая. подозреваю что дурак не этот кто-то,а я. может кто-нибудь объяснить что это вообще такое и как это считать? может программку какую посоветуете?

    з.ы. в текстовом файле тысячи всяких цифирок и немножко буковок

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Красноярск
    • Машина: TLC-80 GX, 1HZ, 1993год

    А зачем умножать на 256? Вроде КС просто считается как сумма значений байт.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Питер
    • Машина: Toyota Voyager

    формула такая. не я придумал

    sos.gif

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Волгоград
    • Машина: (была) Toyota Surf 1991 2L-TE. Теперь Форестер.

    В принципе элементарная програмка. Жаль я 100 лет не программировал в человеческой среде. А то бы налабал за 15 мин.

    Хотя смысл её не очень ясен smile.gif

    Если не решишь задачку, то попробую в выходные вспомнить молодость...

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Питер
    • Машина: Toyota Voyager

    как я понял назначение любой контрольной суммы-автоматическая проверка файла на целостность. вроде...

    все говорят что эта задачка пара пустяков smile.gif

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Мюнхен
    • Машина: -

    http://ru.wikipedia.org/wiki/%D0%9A%D0%BE%...%BC%D0%BC%D0%B0

    и оттуда по линкам.

    КС просто по-разному можно считать.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Хабаровск
    • Машина: TLC78 1KZ-TE автомат

    так и вчем проблема? 65536 это 16 бит, определил нужного размера и складывай, цикл от [ и до ]. Писать код лень.

    скачал какую-то программку
    . Это тебе готовую что ли надо? Поиск в помощь, хотя врядли

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Питер
    • Машина: Toyota Voyager
    smile.gif не поверишь- я не понимаю как складывать байты с битами из текстового файла состоящего из нескольких тысяч цифр smile.gif т.е. воопще ни в зуп ногой

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Хабаровск
    • Машина: TLC78 1KZ-TE автомат

    Тогда нафига задавать подобные вопросы на автомобильном форуме?

    100% уверен если в гугле набрать што то типа "подсчет контрольной суумы файла" + искомая среда / примеры то будет результат

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Москва
    • Машина: 17 лет был RN61 1988; теперь Suzuki GV 2002+Альмера G15 2014

    Текст в ASCII, двухбайтное представление, суммирование в хеках. Вообщем да - на 15 минут писания на нормальном С. Текст засасывается как символьный и тут же циклом суммируется как числовой. Ответ выдается в 16битном представлении - для обрезания 65536 автоматом.

    Даже компиллера сейчас не найду - не пишу 12 лет. А на ASMе это было бы наверняка еще красивее и компактнее.

    Поищи молодого Сшника если надо код написать. Но явно алгоритм _стандартный_ (для DOS - это явно ASCIIориентированное решение) - где-то в Инете должна быть реализация.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Питер
    • Машина: Toyota Voyager

    To: Viacheslav77

    у тебя в визитке написано что ты программер,и все чем ты смог помочь-это отправить меня в гугль. smile.gif туда я и без твоей подсказки добрался. могу я считать себя программером?

    buzz.gif

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Москва
    • Машина: 17 лет был RN61 1988; теперь Suzuki GV 2002+Альмера G15 2014

    Вань, не отвлекайся - ищи по ключевым словам "подсчет контрольной суммы ASCII текста" или что-то подобное - тебе нужно представление текста в кодировке ASCII.

    Программер это тот кто пишет код на языке. Все остальные кибернетики, неграмотно называемые программистами на самом деле кто угодно но не программисты.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Питер
    • Машина: Toyota Voyager
    Текст в ASCII, двухбайтное представление, суммирование в хеках. Вообщем да - на 15 минут писания на нормальном С. Текст засасывается как символьный и тут же циклом суммируется как числовой. Ответ выдается в 16битном представлении - для обрезания 65536 автоматом.

    Даже компиллера сейчас не найду - не пишу 12 лет. А на ASMе это было бы наверняка еще красивее и компактнее.

    Поищи молодого Сшника если надо код написать. Но явно алгоритм _стандартный_ (для DOS - это явно ASCIIориентированное решение) - где-то в Инете должна быть реализация.

    я так понял один символ равен одному байту? могу я в таком случае посчитать количество символов в WORDе и потом помножить это кол-во на 256?

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Москва
    • Машина: 17 лет был RN61 1988; теперь Suzuki GV 2002+Альмера G15 2014

    НЕТ. Любой символ в машине представляется в како-то кодировке. Кодировок больше чем одна. Судя по изначально цитированному тобой алгоритму речь идет о представлении текста в кодировке ASCII. [хрум]

    Так.... Что-то я сам засомневался - ASCII ли. Туго вспоминается если давно не пользовался знаниями. Ща, еще раз вчитаюсь.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Мюнхен
    • Машина: -
    НЕТ. Любой символ в машине представляется в како-то кодировке. Кодировок больше чем одна. Судя по изначально цитированному тобой алгоритму речь идет о представлении текста в кодировке ASCII. [хрум]

    Так.... Что-то я сам засомневался - ASCII ли. Туго вспоминается если давно не пользовался знаниями. Ща, еще раз вчитаюсь.

    295722[/snapback]

    2Иваси - кинь мне в почту imdek______ukr.net пример того файла, к которому считать надо crc, а то сомнения у меня, что ты правильно задачу формулируешь.

    напишем тебе программу, пожалуй..

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Москва
    • Машина: 17 лет был RN61 1988; теперь Suzuki GV 2002+Альмера G15 2014

    Так, немного вспомнил. Вообщем еще раз: текст, любой символ в машине представляются каким-то кодированием. И кодировок бывает много (больше одной). То-есть в любом случае любой символ в мышыне это все равно число, лежащее в ячейке памяти. И только программа знает как воспринимать это число - как символ в кодировке или как число. А суть (еще раз) содержимого в ячейке не меняется. Извини - без этого не обяснить что происходит.

    Теперь смотри - берем самый простой пример из твоего алгоритма:

    []. Это в машинном представлении в коде ASCII выглядит как 2 шестнадцатиричных (по другому, на жаргоне -" в хеках") числа в двух ячейках - одно, первое, 5B (или в десятичной системе 91), второе 5D (93). Но если эти два числа рассматривать как одно непоместившееся в ячейку то это будет одно число 5D5B (23899). Причем превращение из двух в одно можно достигнуть путем умножения второго числа на 256 (в хеках 100) и последующего суммирования:

    5D*100 + 5B = 5D5B

    А дальше тебе такие двухбайтные числа надо просуммировать - если текст например [Qq]. Реально это будет 515B + 5D71 = AECC (Q=51, q=71)

    65535 это максимальное четырехзначное шеснадцатиричное - FFFF. 65536 это 10000. Тоесть из результата суммирования можно ничего не вычитать а взять 4 последних разряда в хеках. Например для случая обсчета контрольной суммы [QqQqQq] результат тупого суммирования будет 515B + 5171 +5171 + 5D71 = 151AE а контрольная сумма будет 51AE или 20910 в десятичной системе.

    Извини запутал немного. Вообщем алгоритм стандартный, но это всетаки не "тупой" текст в ASCII. Ищи в Инете, должен быть.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Питер
    • Машина: Toyota Voyager

    Спасибо! не могу сказать что понял всё,но суть стала ясна. "хеки" лезли в поиске ото всюду и пугали меня-я думал это из другой оперы smile.gif теперь буду рыть глубже

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Питер
    • Машина: Toyota Voyager

    To: Katonych

    Спасибо! Респект и уважуха!

    пока я тут мучился ,складывал и вычитал на калькуляторе и в екселе какие-то бешеные миллиарды сотворил такую чудную кнопочку!!!

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Вологодская обл
    • Машина: TLC 100 4.2 TD AKПП

    не создаю новую тему...тут интересуюсь- не могу ни с какого браузера зайти на гугловские сайты, включая ю-туб...грузятся, но не мгут загрузится страницы...с другого компа без проблем...что за хрень?...мож подскажет кто?

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах
    • Откуда: Волгоград
    • Машина: (была) Toyota Surf 1991 2L-TE. Теперь Форестер.

    другой комп через того же провайдера, с такими же настройками?

    Если да, то скорее всего вирусы.

    Поделиться сообщением


    Ссылка на сообщение
    Поделиться на других сайтах

    Создайте аккаунт или войдите в него для комментирования

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйтесь для получения аккаунта. Это просто!

    Зарегистрировать аккаунт

    Войти

    Уже зарегистрированы? Войдите здесь.

    Войти сейчас

    • Сейчас на странице   0 пользователей

      Нет пользователей, просматривающих эту страницу.


    Change privacy settings
    ×

    Важная информация

    Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.