• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

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

enclave

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

char array[64]; int x = 1001;

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

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

Mustang

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

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

sprintf(array, "%d", x);

а конвертировать можно повсякому! смотря что и куда тебе нужно. :)
 
G

Guest

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

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

LAW

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

char array[64]; int x = 1001;

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

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

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

Удачи
 
6

62316e

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

Creo

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

Присвой переменной какое нить значение, а потом обращайся к нему как к массиву. Тогда a.mas[0] младшая часть инт, a.mas[1] -- старшая(или наоборот ;) :( ).
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!