Форум программистов, компьютерный форум CyberForum.ru

Как строки с шестнадцатеричным содержимым записать в биты char? - C++

Восстановить пароль Регистрация
 
Светла
3 / 3 / 0
Регистрация: 22.03.2012
Сообщений: 15
22.03.2012, 21:23     Как строки с шестнадцатеричным содержимым записать в биты char? #1
Доброго времени суток, Уважаемые!
Дано задание - сформировать приложение, с помощью которого необходимо записать шестнадцатеричные цифры, которые вводим на форме в компоненты Edit, выбираем из ComboBox, Memo(пока предполагаю использовать эти компоненты,потому как новичок и многого не знаю еще) в структуры с битовыми полями, например:
C++
1
2
3
4
typedef struct Struct {
  unsigned char   СС:    2;  
  unsigned char   FF:     6;  
} Struct_t;
Допустим в переменную CC нужно записать 0x01, который вываливался как один из вариантов из ComboBox. Я пробовала выбранный элемент ComboBox привести к int, а затем к char. Знаю, что без facepalm на это смотреть невозможно.
Посоветуйте пожалуйста, как записать правильно? Возможно, с использованием других компонент.. Пишу в Borland C++ Builder.
Спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2012, 21:23     Как строки с шестнадцатеричным содержимым записать в биты char?
Посмотрите здесь:

C++ Как записать Short в два char'a?
Как записать char массив в конструкторе C++
Как записать значение типа double в char? C++
Написать функцию, меняющую в переменной типа char местами биты с номерами n и n+1 C++
C++ Как записать и прочитать int (4 byte) из char[]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
23.03.2012, 01:08     Как строки с шестнадцатеричным содержимым записать в биты char? #2
в Борланде AnsiString ?
в общем можешь попробовать так:
перегоняешь в массив char через .str() (вроде так)
в переменную типа int можно из массива считать 16-ричную величину так:
C
1
2
3
char a[20]= "0x123";
int i;
sscanf(a,"%x",&i);
если я правильно понял вас.
Светла
3 / 3 / 0
Регистрация: 22.03.2012
Сообщений: 15
23.03.2012, 10:49  [ТС]     Как строки с шестнадцатеричным содержимым записать в биты char? #3
Спасибо за ответ, но в данном случае предполагается, что содержимое строки AnsiString записывается в один символ char. С массивом char проблем бы не возникло.
Я пробовала такой подход:

сама структура:
C
1
2
3
4
5
typedef struct Struct {
  unsigned char   СС:    2;  
  unsigned char   FF:    6;
  unsigned char  NN;
} Struct_t;
Попытки правильно записать информацию в char:

C
1
2
3
4
5
6
7
Struct_t g, g1;
 
 int h = StrToInt(CB1->Items->Strings[0]); // содержимое Strings[0] = "0x01";
 g.СС = (char)h;  // записывалось нормально
 
 int h1 = StrToInt(CB1->Items->Strings[0]);// содержимое Strings[0] = "0xFF";
 g1.NN = (char)h1;  // записывалась  буковка 'я' вместо '0xFF'
Направьте пожалуйста на правильный путь.
Driim
7 / 7 / 0
Регистрация: 29.03.2011
Сообщений: 81
23.03.2012, 11:51     Как строки с шестнадцатеричным содержимым записать в биты char? #4
А как вы смотрети что там записалась буковка "я"? Вообще char используется для кодирования букв и я почти уверен что 0xFF код "я", на самом деле в переменной записанно 0xFF но при выводе на экран он выводит символ код которого записан в переменной.
Светла
3 / 3 / 0
Регистрация: 22.03.2012
Сообщений: 15
23.03.2012, 14:12  [ТС]     Как строки с шестнадцатеричным содержимым записать в биты char? #5
Всем Спасибо, вопрос решен.
Driim, очевидное всегда сложно заметить, Благодарю!
Yandex
Объявления
23.03.2012, 14:12     Как строки с шестнадцатеричным содержимым записать в биты char?
Ответ Создать тему
Опции темы

Текущее время: 02:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru