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

  • Автор темы enclave
  • Дата начала
Статус
Закрыто для дальнейших ответов.
E

enclave

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

char array[64]; int x = 1001;

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

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

Mustang

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

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

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

logosman

#5
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 случаях будет применяться разная оптимизация и разный подход.
 
L
#6
Как присвоить значение переменной типа int символьному массиву?

char array[64]; int x = 1001;

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

Можно ли вообще как-то конвентировать типы переменных?
Всё очень просто:
array=IntToStr(x)
или
array=IntToStr(x).c_str();
точно не помню.
А назад x=StrToInt(array);

Удачи
 
C

Creo

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