Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как записать символ 0x00000000 
:(
    Опции темы
magiisto
Дата 8.7.2009, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 8.7.2009

Репутация: нет
Всего: нет



Всем здрасте . Помогите разобратся в коде
Написал простенькую функцию которая преобразует шестнадцетеричкную строку в её двоичный эквивалент 
Код

void STRtoBIT(char *str, char *out){ //str - входной массив out- выходной
    for(int i=0; i<32; i++){
        switch(str[i]){
            case '0' : out[i/2] = 0x0; //+ 0x0*0x10*(i%2);
                break;
            case '1' : out[i/2] = 0x1*((i+1)%2)+0x10*(i%2);
                break;
            case '2' : out[i/2] = 0x2*((i+i)%2)+0x20*(i%2);
                break;
            case '3' : out[i/2] = 0x3*((i+1)%2)+0x30*(i%2);
                break;
            case '4' : out[i/2] = 0x4*((i+1)%2)+0x40*(i%2);
                break;
            case '5' : out[i/2] = 0x5*((i+1)%2)+0x50*(i%2);
                break;
            case '6' : out[i/2] = 0x6*((i+1)%2)+0x60*(i%2);
                break;
            case '7' : out[i/2] = 0x7*((i+1)%2)+0x70*(i%2);
                break;
            case '8' : out[i/2] = 0x8*((i+1)%2)+0x80*(i%2);
                break;
            case '9' : out[i/2] = 0x9*((i+1)%2)+0x90*(i%2);
                break;
            case 'a' : out[i/2] = 0xA*((i+1)%2)+0xA0*(i%2);
                break;
            case 'b' : out[i/2] = 0xB*((i+1)%2)+0xB0*(i%2);
                break;
            case 'c' : out[i/2] = 0xC*((i+1)%2)+0xC0*(i%2);
                break;
            case 'd' : out[i/2] = 0xD*((i+1)%2)+0xD0*(i%2);
                break;
            case 'e' : out[i/2] = 0xE*((i+1)%2)+0xE0*(i%2);
                break;
            case 'f' : out[i/2] = 0xF*((i+1)%2)+0xF0*(i%2);
                break;
        }
    }
}

но после обработки строки  d41d8cd98f00b204e9800998ecf8427e 
функция встречает два символа 00 и записывает в массив нулевой символ 0x00000000 , который я так понимаю обозначает символ завершения строки , и все запись останавливается обрабатываются первые 10 символов и выводится такой результат  @╨└РЁ 
как обойти это ограничение , или как сделать подругому?


Это сообщение отредактировал(а) magiisto - 8.7.2009, 17:46
PM MAIL   Вверх
mes
Дата 8.7.2009, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 79
Всего: 250



переводить не си-строку, а массив символов  т.е не применять функции для работы с си строками, а написать например свои для работы с массивом.
на крайний случай можно использовать std::string, ну а вообще тема не раз поднималась, так что если воспользуетесь поиском, можете найти много интересного по теме. smile

Добавлено через 2 минуты
вот к примеру : http://forum.vingrad.ru/act-Search/CODE/sh.../hex/index.html



--------------------
PM MAIL WWW   Вверх
magiisto
Дата 8.7.2009, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 8.7.2009

Репутация: нет
Всего: нет



Спасиб , не знал как правильно сформулировать вот и не нашел , я думаю вопрос решен smile 
PM MAIL   Вверх
bsa
Дата 10.7.2009, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196




M
bsa
magiisto, если ответ на вопрос получен, то пометь тему решенной.

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0442 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.