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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.61
defunct
Сообщений: n/a
09.09.2011, 21:21     Преобразование типов (long -> массив char) #1
Здравствуйте!

имеется функция
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)
Посмотрите здесь:

Написать функцию для перевода переменной типа long в символьную строку в шестнадцатиричном представлении ( ltoah( long num, char s[]) ) и тестирующую C++
C++ Как преобразовать char[8] к unsigned long long?
Преобразование типов wchar_t в char и обратно C++
C++ long long r char[] __int64
C++ Преобразование типов - как строку чисел перевести в целочисленный массив ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
defunct
Сообщений: n/a
09.09.2011, 21:45     Преобразование типов (long -> массив char) #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     Преобразование типов (long -> массив char) #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)));
Meer
0 / 0 / 0
Регистрация: 19.02.2011
Сообщений: 17
09.09.2011, 22:00     Преобразование типов (long -> массив char) #4
Вместо char поставить unsigned char в примерах 1 и 2.
kpoxa
5 / 5 / 0
Регистрация: 08.12.2009
Сообщений: 213
10.09.2011, 11:10     Преобразование типов (long -> массив char) #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++)
Yandex
Объявления
10.09.2011, 11:10     Преобразование типов (long -> массив char)
Ответ Создать тему
Опции темы

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