Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Как такое сделать то?   Найти похожие ветки 

 
ПЛОВ ©   (2006-06-01 12:59) [0]

Чет совсем голова не варит... Кстати, вопрос по С++ :)
Есть переменная типа int, так вот 4 ее байта нужно скопировать в массив char. Как такое сделать в Делфи я знаю, а вот в С++...


 
Desdechado ©   (2006-06-01 13:02) [1]

я уже подзабыл, но может так

c[0]=*(unsigned char &) i;


 
ПЛОВ ©   (2006-06-01 13:07) [2]

error C2100: illegal indirection


 
han_malign ©   (2006-06-01 13:10) [3]

char ch[4];
*(int*)ch = i;


 
ПЛОВ ©   (2006-06-01 13:32) [4]


> han_malign

Вроде как ошибок нету, но потом у меня эти данные должны писаться в файл вместе с текстом - нету не того, не другого :)


 
Игорь Шевченко ©   (2006-06-01 13:34) [5]


> Есть переменная типа int, так вот 4 ее байта нужно скопировать
> в массив char


union {
 long l;
 char c[4];
} a;

a.l = value;


 
J_f_S   (2006-06-01 13:34) [6]

1. Брутально
CopyMemory(ch, &i, 4)

2. Общепринято
ch[0] = i >> 24
ch[2] = (i & 0x00ff0000) >> 16
ch[3] = (i & 0x0000ff00) >> 8
ch[4] = i & 0x000000ff

3. Элегантно
union _t_union
{
  int i;
  char ch[4]
}

_t_union t;
t.i = i;
ch[0] = t.ch[0]
ch[1] = t.ch[1]
ch[2] = t.ch[2]
ch[3] = t.ch[3]

ЗЫ: Насчет порядка чаров могу и попутать, не взыщите


 
ПЛОВ ©   (2006-06-01 13:45) [7]

Спа, разобрался... Ошибка как всегда оказалась в другом :)


 
han_malign ©   (2006-06-01 14:01) [8]


> 1. Брутально

- memcpy, strcpyn, lstrcpynA
есть еще брутальный вариант
   wsprintf(ch, "%.4s", &i);

>2. Общепринято

- это Network order (ntohl)


 
вразлет ©   (2006-06-01 14:04) [9]

Ну что, добьем ветку до 100 постов? :))


 
Kolan ©   (2006-06-01 14:06) [10]


> ПЛОВ ©   (01.06.06 12:59)

Просто распологаешь масси и число в одном и томже месте памяти...
var
 CharArray: array[0..3] of Char;
 I: Integer absolute CharArray;
begin
 I := 4;
 // В Массив уже заполнен. :)  
end;


 
ПЛОВ ©   (2006-06-01 14:27) [11]

Спасибо еще раз... Аж глаза разбегаються от количества вариантов :))


 
Kolan ©   (2006-06-01 14:31) [12]

Упс не это не для C++ это для Delphi. Я перепутал... :)


 
Prohodil_Mimo   (2006-06-01 15:18) [13]

ну дабы раздуть ветку до ста постов, можно и для каждого языка примеров накидать :о)


 
Игорь Шевченко ©   (2006-06-01 15:53) [14]


> можно и для каждого языка примеров накидать


Для prolog"а и APL слабо ? ;)


 
tesseract ©   (2006-06-01 16:04) [15]


> Для prolog"а и APL слабо ? ;)

А Cobol и fortran почему забыт ?


 
J_f_S   (2006-06-01 17:14) [16]

invoke memcpy, ch, numver, 4


 
J_f_S   (2006-06-01 17:18) [17]

> memcpy, strcpyn, lstrcpynA
Ну да, CopyMemory это и есть memcpy, только завернутый в макрос, чтоб никто не догадался.



Страницы: 1 вся ветка

Текущий архив: 2006.06.25;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
15-1149024510
asdfgb
2006-05-31 01:28
2006.06.25
Комплексные автоматиpированные системы


2-1149518593
evgenij_
2006-06-05 18:43
2006.06.25
API Windows


15-1148974453
Иксик
2006-05-30 11:34
2006.06.25
Протесты азербайджанцев в Иране


2-1149694353
Цукор5
2006-06-07 19:32
2006.06.25
DWord в String


15-1149120248
vidiv
2006-06-01 04:04
2006.06.25
Раздел математики