Конвентирование типов переменных...

Тема в разделе "C и С++ FAQ", создана пользователем enclave, 19 май 2004.

Статус темы:
Закрыта.
  1. enclave

    enclave Гость

    Как присвоить значение переменной типа int символьному массиву?

    char array[64]; int x = 1001;

    array[] = x? // Вот здесь!

    Можно ли вообще как-то конвентировать типы переменных?
     
  2. Mustang

    Mustang Гость

    если тебе число нужно представить строкой, то приведение типов тут не причём!

    Код (Text):
    char array[64];
    int x = 1001;

    sprintf(array, "%d", x);
    а конвертировать можно повсякому! смотря что и куда тебе нужно. :)
     
  3. Guest

    Guest Гость

    А какой заголовочный файл нужен для sprintf()?
     
  4. Mustang

    Mustang Гость

    стандартный сишный "stdio.h"!
     
  5. logosman

    logosman Гость

    2enclave:
    Чтобы записать int в массив char, то без ассма не обойтись!

    // Пример для VC++
    void main(void)
    {
    char array[64];
    int x = 1001;
    int index, ofs;

    index = 3;
    ofs = (int)&array[index];

    // array[] = x:
    _asm{
    mov esi, [ofs]
    mov eax, [x]
    mov [esi], eax
    }
    }

    Здесь по смещению в памяти array+index учитывая '0' будет записан X.

    Для TC/BC немного сложнее, смотря для какого случая:
    - либо переменная в сегменте кода DS=CS
    - либо DS!=CS

    в этих 2 случаях будет применяться разная оптимизация и разный подход.
     
  6. LAW

    LAW Гость

    Всё очень просто:
    array=IntToStr(x)
    или
    array=IntToStr(x).c_str();
    точно не помню.
    А назад x=StrToInt(array);

    Удачи
     
  7. 62316e

    62316e Гость

    Код (Text):
        char array[4];
    int x = 1001;
    *reinterpret_cast<int*>(array) = x;
     
  8. Creo

    Creo Гость

    Тут не все так просто. Если int 2 байта, то он поместиться в два char(a). Если 4 то соответственно в 4. Иначе придется оставлять только младшие разряды. И есть ли вообще смысл таким заниматься?
    Попробуй так:
    Код (Text):
    union {
    char mas[2];
    int i;
    } a;
    Присвой переменной какое нить значение, а потом обращайся к нему как к массиву. Тогда a.mas[0] младшая часть инт, a.mas[1] -- старшая(или наоборот ;) :( ).
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей