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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
prank2007
 Аватар для prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
#1

Надо перевести переменную типа unsigned char* в signed int и обратно - C++

04.10.2012, 12:12. Просмотров 1987. Ответов 4
Метки нет (Все метки)

у меня есть переменная типа unsigned char*, мне нужно перевести ее в signed int , провести арифметические вычисления и затем перевести ее обратно в unsigned char*;

делаю примерно так:
C++
1
2
3
4
5
6
unsigned char* r1= ....; //значение r1
signed  int Ir1 = atoi(r1);// перевожу в тип int
/* 
проводим вычисления 
 
*/
как быть дальше?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.10.2012, 12:12     Надо перевести переменную типа unsigned char* в signed int и обратно
Посмотрите здесь:

Конвертация int в char и обратно C++
C++ Тип char.Signed/unsigned.Отличие типов данных.
C++ Размер для данных (int, char, long, double, short, unsigned, float)
C++ Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int.
C++ Сделать преобразование unsigned char в char, а затем типу int
C++ Значения типов данных (signed, unsigned, char)
Изменить программу для типа unsigned char C++
Vector<unsigned char> в int C++
Как получить адрес переменной типа unsigned char? C++
Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" C++
C++ Преобразование int char и обратно
C++ Перевести строку типа char в массив типа int

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
153 / 137 / 3
Регистрация: 23.05.2009
Сообщений: 275
04.10.2012, 12:31     Надо перевести переменную типа unsigned char* в signed int и обратно #2
Если в строке хранятся байты int, то можно так:
C++
1
2
3
4
5
unsigned char r1[] = {1, 0, 0, 0}; 
int Ir1 = 0;
memcpy(&Ir1, r1, sizeof(int)); // Ir1 = 1;
++Ir1; //Ir1 = 2;
memcpy(r1, &Ir1, sizeof(int)); // r1 = {2, 0, 0, 0}
Если же в строке хранится строковое представление числа типа "1234", то для atoi есть обратная функция itoa
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2583 / 235
Регистрация: 01.11.2011
Сообщений: 6,385
Завершенные тесты: 1
04.10.2012, 12:31     Надо перевести переменную типа unsigned char* в signed int и обратно #3
itoa


Не по теме:

Цитата Сообщение от prank2007 Посмотреть сообщение
как быть дальше?
Все задают себе такой вопрос.



По хорошему надо еще проверочек насовать. Типа если вдруг там символ, а мы его в int запихиваем.
igorrr37
 Аватар для igorrr37
1600 / 1228 / 121
Регистрация: 21.12.2010
Сообщений: 1,875
Записей в блоге: 7
04.10.2012, 12:34     Надо перевести переменную типа unsigned char* в signed int и обратно #4
http://www.cplusplus.com/reference/c...stdio/sprintf/
KATbIK
 Аватар для KATbIK
86 / 81 / 10
Регистрация: 02.08.2011
Сообщений: 335
04.10.2012, 12:38     Надо перевести переменную типа unsigned char* в signed int и обратно #5
если байты в unsigned char* r1, то *(int*)(& r1[0])
Конечно кол-во байт не меньше 4-х, если int 4 байта.
обратно в байты примерно так
C++
1
2
3
unsigned char* s = (unsigned char*)&Ir1;
for (size_t i = 0; i < sizeof(int); ++i)
      r1[i] = *s++;
проверь на всякий случай.
Yandex
Объявления
04.10.2012, 12:38     Надо перевести переменную типа unsigned char* в signed int и обратно
Ответ Создать тему
Опции темы

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