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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
defunct
Сообщений: n/a
#1

Преобразование типов (long -> массив char) - C++

09.09.2011, 21:21. Просмотров 2527. Ответов 4
Метки нет (Все метки)

Здравствуйте!

имеется функция
C++
1
void sendchar(unsigned char data);
не могу ее использовать т.к. не знаю как преобразовать long в unsigned char.. понимаю, что с помощью указателей, но что-то ничего не выходит.

пишу типа такого:
C++
1
2
3
4
5
6
7
8
9
10
11
12
   long D;
   ...
 
   int i;
   unsigned char *A;
 
   A = &D;
 
   for (i=0; i++; sizeof(long)) 
       {
          sendchar( A[i] );
       }
И получаю ошибку:
operands of = have illegal types 'pointer to unsigned char' and 'pointer to long int'

Компилятор ImageCraft C

Уважаемые, подскажите пожалуйста, как long преобразовать в массив char, если можно с небольшим примером.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 21:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование типов (long -> массив char) (C++):

Преобразование массива char в массив long long - C++
Имеется большой массив char, в котором содержатся числа. Нужно максимально быстро извлечь их и записать в массив чисел long long. ...

Перевести большой массив char в long long - C++
Здравствуйте. Есть массив char c 3145360828. Надо его в int перевести. Пробовал с atoi, вместо int делал long long, не получалось,...

Преобразование long double в char - C++
Вернемся к обсуждению денежных строк из упражнения 6. Напишите ме- од ldtoms() для преобразования числа типа long double в денежную строку,...

Создать объединение, что содержит элементы типов char int short fload long string - C++
всем доброго времени суток! мне нужно создать объединение, что содержит элементы типов char int short fload long string. создать массив...

Преобразование типов wchar_t в char и обратно - C++
Добрый вечер уважаемые форумчане! Как можно перевести из wchar_t в char и обратно. Если можно с примерами. За ранее спасибо!! ...

Как char[] перевести в битовую маску long long(64 бита) и наоборот? - C++
Как char перевести в битовую маску long long(64 бита) и наоборот?

4
defunct
Сообщений: n/a
09.09.2011, 21:45 #2
Уже разобрался, но появился новый вопрос ;>
C++
1
2
3
4
5
6
7
8
9
10
11
  long D;  
  ...  
  int i;  
  void *P;            // <--- Можно ли обойтись без этого
  unsigned char *A;  
 
  P = &D;             // <--- И этого
  A = P;
 
  for (i=0; i < sizeof(D); i++)     
      sendchar( A[i] );
Meer
0 / 0 / 0
Регистрация: 19.02.2011
Сообщений: 17
09.09.2011, 21:46 #3
1)
C++
1
2
3
4
5
6
7
8
9
10
11
union DummyUnion
{
    long m_lNum;
    char m_arrRep[sizeof(long)];
};
...
DummyUnion dummy;
dummy.m_lNum = <some long number>;
 
for (size_t i = 0; i < sizeof(long); ++i)
    sendchar(dummy.m_arrRep[i]);
2)
C++
1
2
for (size_t i = 0; i < sizeof(long); ++i)
    sendchar(static_cast<char>(num >> (i<<3)));
0
Meer
0 / 0 / 0
Регистрация: 19.02.2011
Сообщений: 17
09.09.2011, 22:00 #4
Вместо char поставить unsigned char в примерах 1 и 2.
0
kpoxa
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
10.09.2011, 11:10 #5
Компайлер же сказал
operands of = have illegal types 'pointer to unsigned char' and 'pointer to long int'

для того, чтобы он не ругался надо изменить строку
C++
1
A = &D;
на
C++
1
A = (unsigned char *)(&D);
а дальше
C++
1
2
for (i=0; i < sizeof(D); i++)      
    sendchar( A[i] );
(кстати, операция ++i работает быстрее, чем i++)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2011, 11:10
Привет! Вот еще темы с ответами:

Как преобразовать const char * в long в С++, 0xE0E040BF в long - C++
Помогите пожалуйста преобразовать текст в число на C++ const char * value=cmd; long ircode = atol(value); ...

Как преобразовать char[8] к unsigned long long? - C++
Требуется выполнить преобразование char к unsigned long long и обратно

Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s[]) ) и тестирующую - C++
Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s) ) и...

long long r char[] __int64 - C++
Добрый день возник следующий вопрос: мне требуется преобразовать тип long long в char, при этом код должен быть переносимым (т.е. мне надо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Yandex
Объявления
10.09.2011, 11:10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru