Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];

Вниз

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

 
ПЛОВ ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.01 c
6-1139813826
Pavlusha00
2006-02-13 09:57
2006.06.25
БД Через Proxy


3-1146133045
linx
2006-04-27 14:17
2006.06.25
Получить значение генератора


2-1149274678
deplhi
2006-06-02 22:57
2006.06.25
EOleSysError: Class not registered(и снова про СОМ)


11-1129286044
dvk
2005-10-14 14:34
2006.06.25
Проблема с 32-битным BitMap ом


1-1147986841
Германн
2006-05-19 01:14
2006.06.25
Установка Indy9 на Д6





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский