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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
prank2007
 Аватар для prank2007
0 / 0 / 0
Регистрация: 01.07.2012
Сообщений: 64
04.10.2012, 12:12     Надо перевести переменную типа unsigned char* в signed int и обратно #1
у меня есть переменная типа unsigned char*, мне нужно перевести ее в signed int , провести арифметические вычисления и затем перевести ее обратно в unsigned char*;

делаю примерно так:
C++
1
2
3
4
5
6
unsigned char* r1= ....; //значение r1
signed  int Ir1 = atoi(r1);// перевожу в тип int
/* 
проводим вычисления 
 
*/
как быть дальше?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andsteadur
152 / 136 / 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
5547 / 2561 / 233
Регистрация: 01.11.2011
Сообщений: 6,330
Завершенные тесты: 1
04.10.2012, 12:31     Надо перевести переменную типа unsigned char* в signed int и обратно #3
itoa


Не по теме:

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



По хорошему надо еще проверочек насовать. Типа если вдруг там символ, а мы его в int запихиваем.
igorrr37
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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 и обратно
Ответ Создать тему
Опции темы

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