lightalex
@lightalex

Как преобразовать char массив в int С++?

Здравствуйте друзья!
Есть код который преобразовывает int в char:
unsigned char a[4];
int b = 124551;

*((int *) a) = b;

Подскажите, а можно ли по такому же принципу преобразовать char массив в int?
Или единственный выход - поэлементный перебор массива?
  • Вопрос задан
  • 179 просмотров
Решения вопроса 3
@res2001
Developer, ex-admin
unsigned char a[4] = {'1', '2', '3', '4'};
int b = *(int*)a;

Только преобразования типов в С++ нужно делать с помощью плюсовых кастов, а не в сишном стиле.
Ответ написан
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
Подскажите, а можно ли по такому же принципу преобразовать char массив в int?

unsigned char a[4] = {...};
int b = ...;
memcpy(a, &b, sizeof(a)); // -- int в char
memcpy(&b, a, sizeof(a)); // -- char в int
Ответ написан
@sddvxd
Благодаря обсуждению первого ответа и ответов автора можно организовать следующую программу:
union conv{
    char (*pcarr)[4];
    int* pint;
};

static conv bconv;

int main(){
    bconv.pint = new int(100);
    cout << *((int*)bconv.pcarr) << "\n"; //int to char (*)[4]

    bconv.pcarr = (char(*)[4])new char[4]{1,2,3,4};
    cout << *bconv.pint << "\n"; //char (*)[4] to int
}


union conv{
    unsigned char (*pcarr)[4];
    int* vint;
};

static conv bconv;


int main(){
    bconv.vint = new int(100);
    cout << *((int*)bconv.pcarr) << "\n"; //int to char (*)[4]

    bconv.pcarr = (unsigned char(*)[4])new unsigned char[4]{255,255,255,127}; //big-endian
    if(INT_MAX == *bconv.vint) cout << "bingo\n";
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Alytics Зеленоград
от 100 000 до 140 000 руб.
YLab Тольятти
от 80 000 до 100 000 руб.
pozitiv.digital Москва
от 100 000 руб.
16 янв. 2019, в 10:30
5000 руб./за проект
16 янв. 2019, в 10:29
1000 руб./за проект