Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2010, 13:22   #1
jodam
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 10
По умолчанию добавление лишних битов

Код:
#include <stdio.h>

int wait_flag=1;   
char buf[8]; 
char In1;
int i;
unsigned char e;
int main(void)
{

 if (wait_flag==1)  //if input is available
         {
	   
            buf[0]=224;
	    buf[1]=130;
	    buf[2]=167;
	    buf[3]=77;
	    buf[4]=192;
	    buf[5]=118;
	    buf[6]=60;
	    buf[7]=6;

               for (i=0; i<8; i++)  //for all chars in string
               {
   
		  printf(" %x ",buf[i]);
		  
               }  
            
         }  

return(0);
}
Компилирую gcc под Ubuntu, запускаю сие чудо, и вот такой такой вывод в консоль:
ffffffe0 ffffff82 ffffffa7 4d ffffffc0 76 3c 6

откуда берутся лишние ffffff ??? которые отнюдь мне не нужны.

Последний раз редактировалось Stilet; 13.05.2010 в 13:55.
jodam вне форума Ответить с цитированием
Старый 13.05.2010, 13:26   #2
mrChester
Я
Форумчанин
 
Аватар для mrChester
 
Регистрация: 24.04.2010
Сообщений: 693
По умолчанию

А что хочешь увидеть?
Все персонажи вымышлены, все совпадения случайны.
Если жизнь игра, тогда я её разработчик ©.
mrChester вне форума Ответить с цитированием
Старый 13.05.2010, 13:30   #3
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Подозреваю, они добавляются потому, что тип char имеет 8 бит. Вот тебе оставшиеся 6 и заполняют F
danekne вне форума Ответить с цитированием
Старый 13.05.2010, 13:36   #4
jodam
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от mrChester Посмотреть сообщение
А что хочешь увидеть?
хочу увидеть e0 82 a7 4d c0 76 3c 6

Какой посоветуете тип?
jodam вне форума Ответить с цитированием
Старый 13.05.2010, 13:47   #5
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

В таких пределах 0- short или int/ можно unsigned
danekne вне форума Ответить с цитированием
Старый 13.05.2010, 13:52   #6
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

Хоть buf[i] и char, при вызове printf он приводится к int. Юзай unsigned char, тогда он будет приводиться к unsigned int, и всё будет нормально.

Последний раз редактировалось Somebody; 13.05.2010 в 13:56.
Somebody вне форума Ответить с цитированием
Старый 13.05.2010, 14:08   #7
jodam
Пользователь
 
Регистрация: 13.05.2010
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Somebody Посмотреть сообщение
Хоть buf[i] и char, при вызове printf он приводится к int. Юзай unsigned char, тогда он будет приводиться к unsigned int, и всё будет нормально.
Благодарю, все получилось
jodam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод массива битов в байт Барбарис Общие вопросы .NET 4 25.02.2010 16:15
Инлайн ассемблер. считывание битов!!! Hacker19_90 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 17.03.2009 19:58
Задача с заменой битов. Нужна помощь! Solma Фриланс 9 07.12.2008 22:48
извлечение битов из байтов... WinApi Помощь студентам 4 10.11.2008 15:14
Перестановка битов. RegentM Общие вопросы Delphi 3 05.11.2007 17:23