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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> хорирование, перевод чисел из разных систем, упражнение из книги Страуструпа 
:(
    Опции темы
megabist
Дата 10.10.2006, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Mart Slaaf
**


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

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



так нет я печатаю в другой чар массив вот смотри:

Код

AnsiString S;
int i=0;
char ch[17];
char chess[100];

S=Edit1->Text;
strcpy(ch,S.c_str());
sprintf(chess, "%.2x", ch[i]);
switch (ch[i]){
 case 0xc1:{
Button2->Visible=false;Label1->Caption=chess; break;}
 }


Свитч, если полностью смотреть нужен, просто не стал удалять уж, так вот мне нужно. чтобы он пеатал только два символа: с1 а он печатает мне fffffc1 как с этим бороться.

Это сообщение отредактировал(а) megabist - 10.10.2006, 12:10


--------------------
Don't panic!

Жди, и Фатум тебя приведёт...
PM MAIL ICQ Skype GTalk   Вверх
likehood
Дата 10.10.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


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

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



Просто 0xc1 это отрицательное число. Объяви ch как unsigned char.

Добавлено @ 13:02 
Или напиши:
Код

sprintf(chess, "%2x", (unsigned char)ch[i]);

PM MAIL   Вверх
megabist
Дата 10.10.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Mart Slaaf
**


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

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



да уже разобралси пасибо огромное всем помогавшим....


--------------------
Don't panic!

Жди, и Фатум тебя приведёт...
PM MAIL ICQ Skype GTalk   Вверх
bsa
Дата 10.10.2006, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



baronp
sprintf(chess, "%2x", (unsigned char)ch[i]) - в корне неправильно. Так как получив "%2x" sprintf думает, что следующий параметр типа unsigned int, а ты ему подсовываешь unsigned char (вместо 4-х байт всего 1).
тогда уж надо писать sprintf(chess, "%2x", (unsigned)ch[i]).

megabist
А не проще ли пользоваться стандартными Борландовскими классами?
Код
int i=0;
AnsiString chess;

unsigned c = Edit1->Text[i+1];      //+1 нужен, так как в AnsiString нумерация начинается с 1.
chess = AnsiString().sprintf("%2X", c);
switch (c){
   case 0xc1:
       Button2->Visible=false;
       Label1->Caption=chess;
       break;
}


Это сообщение отредактировал(а) bsa - 10.10.2006, 14:07
PM   Вверх
powerfox
Дата 10.10.2006, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I wanna fork()
****


Профиль
Группа: Комодератор
Сообщений: 3990
Регистрация: 1.10.2005
Где: Санкт-Петербург

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



Эх, какая тема всплыла smile Я тогда совсем чайником был, а эта тема, кажется, вообще первая на винграде. Как загадочно выглядел толстый кот с аттестатом и статусом "бывалый" smile))) И не так и давно это было:
Цитата

Дата 1.10.2005, 20:53 (ссылка)


Цитата

Регистрация: 1.10.2005


smile

Добавлено @ 15:19 
Цитата(Void @  1.10.2005,  23:15 Найти цитируемый пост)
Коль скоро ты читаешь Страуструпа, все это подробно описано в главе 21.4 (3-е издание).

Цитата(powerfox @  2.10.2005,  14:13 Найти цитируемый пост)
Спасибо Void. Просто я до той главы не дошёл, а в упражнении потребовалось.


Стыдно признаться, но и сейчас не дошёл  smile 



--------------------
user posted image
PM WWW   Вверх
likehood
Дата 10.10.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


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

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



Цитата(bsa @  10.10.2006,  15:06 Найти цитируемый пост)
sprintf(chess, "%2x", (unsigned char)ch[i]) - в корне неправильно. Так как получив "%2x" sprintf думает, что следующий параметр типа unsigned int, а ты ему подсовываешь unsigned char (вместо 4-х байт всего 1).
тогда уж надо писать sprintf(chess, "%2x", (unsigned)ch[i]).

Если писать так:
Код

sprintf(chess, "%2x", (unsigned)ch[i])

то получим fffffc1.
Сначала я написал так:
Код

sprintf(chess, "%2x", (unsigned)((unsigned char)ch[i]));

, но и без первого unsigned все работает без ошибок (почему я и сам до конца не понял).
PM MAIL   Вверх
dumb
Дата 10.10.2006, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



char, short - все одно: esp на 4 двигается...
PM MAIL   Вверх
bsa
Дата 11.10.2006, 21:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(dumb @ 10.10.2006,  18:35)
char, short - все одно: esp на 4 двигается...

Это на X86, а на RISC или ARM что? Ты гарантируешь, что ошибки не будет? ;)
PM   Вверх
dumb
Дата 12.10.2006, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

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



Цитата(bsa @  11.10.2006,  21:26 Найти цитируемый пост)
а на RISC или ARM что?

дыГ там еще жестче. (кстати, как ARM расшифровывается? smile)

Цитата(bsa @  11.10.2006,  21:26 Найти цитируемый пост)
Ты гарантируешь, что ошибки не будет? ;)

неее.. понятное дело, что момент этот зависит и от архитектуры, и от компилера - так что в пень. no warranties. smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

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

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


 




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


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

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