ФорумПрограммированиеБольше языковC/C++ и C# → Написать функцию

Написать функцию

  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 января 2011 г. 11:04

    Есть файл тектовый в аски кодировке, нужно каждый символ этого файла представить в виде двух символов шестнадцатиричного кода исходного символа. Язык С (не с++ и не с#) . Фходные файлы очень большие бывают. Я подозреваю что можно это сделать очень простым способом типа реобразовать биты … Какие есть варианты ибо я не шарю в С??
  • Frozzeg

    Сообщения: 5641 Репутация: N Группа: Джедаи

    Spritz 21 января 2011 г. 18:07, спустя 7 часов 2 минуты 50 секунд

    представляешь каждый символ в int, потом переводишь, а сам переводчик нагугли "decimal to hexadecimal C C++"
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 21 января 2011 г. 18:46, спустя 38 минут 54 секунды

    а нельзя как то просто преобразовывая тип, например, нет ли в С типа вроде hexstring ?
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 21 января 2011 г. 20:04, спустя 1 час 18 минут 30 секунд

    Символ в ascii - это уже число (в C), что еще надо? фунцию dec2hex?
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 22 января 2011 г. 1:11, спустя 5 часов 6 минут 40 секунд

    не, hex это тоже только те же 2 числа… надо конверт а не dec2hex
  • Nyaah

    Сообщения: 574 Репутация: N Группа: Джедаи

    Spritz 22 января 2011 г. 9:41, спустя 8 часов 29 минут 57 секунд

    В си char это просто код символа, тоесть число длиной 1 байт, также как вайд чар - число длиной 2 байта. Тебе после чтения данных, нужно просто вывести их в другом формате (использовать не %s или %c при форматированном выводе, а %d (просто число), %x (в 16 системе)), тоесть что-то типа:
    do {
    count = fread(fileHandle, 1, _BUFFER_LENGTH_, buffer);
    for (i = 0; i < count; i++) {
    fprintf(outFileHandle, "x%x ", buffer);
    }
    } while (count == _BUFFER_LENGTH_);
    Work, buy, consume, die
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 22 января 2011 г. 14:54, спустя 5 часов 13 минут 36 секунд

    Nyaah, спасибо это то что я подразумевал. Но наверно просто сделаю карту конверта ASCII страницы та и пиздец, а то printf может быть медленным…
  • krasun

    Сообщения: 1370 Репутация: N Группа: Джедаи

    Spritz 22 января 2011 г. 19:33, спустя 4 часа 38 минут 52 секунды

    kostyl, что такое карта конверта? И почему она будет быстрей, чем fprintf?
  • kostyl

    Сообщения: 5210 Репутация: N Группа: Джедаи

    Spritz 22 января 2011 г. 20:57, спустя 1 час 23 минуты 52 секунды

    карта конверта

    это считай массив индексы в котором соответствуют коду аски символа, а значения - два шестнадцатиричных символа, если представить в виде с троки… получается что надо будет увеличить указатель на код символа и прочитать значение - и больше ничего…
    а почему будет быстрее - я не знаю, мне так кажется, надо проверить, еще не успел…
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 22 января 2011 г. 22:35, спустя 1 час 37 минут 56 секунд

    как использоваться то это будет? если выводиться, то явно printf()'ом сразу лучше.

    а вообще:
    high = char >> 4;
    low = char && 0b00001111;
  • fgets

    Сообщения: 1099 Репутация: N Группа: Кто попало

    Spritz 23 января 2011 г. 3:59, спустя 5 часов 24 минуты 1 секунду

    это моё 221 сообщение на пыхе - пойду напьюсь

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