![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| tenebris |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 20.1.2008 Репутация: нет Всего: нет |
Привет!!!
Скажите, есть переменная типа long. Как мне из памяти скопировать в эту переменную 4 байта. Я так понимаю нужно использовать функцию memcpy. Но у меня ничего не получается. Или я ошибаюсь? |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
tenebris, нет, не ошибаешься.
Если ты копируешь из памяти некоторые 4 байта, то ты должен знать их адрес (это будет источник), в буфере назначения указываешь свою переменную, а в n - sizeof(тип). Это сообщение отредактировал(а) mr.Anderson - 12.10.2008, 13:51 |
|||
|
||||
| tenebris |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 20.1.2008 Репутация: нет Всего: нет |
long pc;
long arg; memcpy(arg,buf[pc],4); ругается cannot convert parameter 2 from 'unsigned char' to 'const void *' |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
|
|||
|
||||
| Lazin |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
а операторы присваивания отменили?
либо
|
||||
|
|||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Lazin, ну, мало ли, может, именно так надо.
Амперсанды перед переменными обязательны, передаются адреса, а не сами переменные. Это сообщение отредактировал(а) mr.Anderson - 12.10.2008, 13:42 |
|||
|
||||
| tenebris |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 20.1.2008 Репутация: нет Всего: нет |
Чё за на , почему он байты в обратном порядке? как от этого избавиться?
Можно ан чистом си, плиз, с++ не знаю. Это сообщение отредактировал(а) tenebris - 12.10.2008, 13:51 |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
tenebris, что значит и в обратном порядке читает? Код приведи.
Это сообщение отредактировал(а) mr.Anderson - 12.10.2008, 13:50 |
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 10 Всего: 146 |
Это порядок байтов Little Endian (так числа в памяти компьютера представляются) |
|||
|
||||
| tenebris |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 20.1.2008 Репутация: нет Всего: нет |
Дамп в памяти такой
bytes: 4A B9 00 A1 00 08 66 06 4A 79 А выводит наоборот. Что теперь декодить ещё надо чтоли? 800a100 |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
tenebris, постом выше тебе дали линк на представление чисел в компьютере, почитай, там по твоему вопросу много интересного написано.
|
|||
|
||||
| tenebris |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 20.1.2008 Репутация: нет Всего: нет |
Прочёл, как это можно исправить или никак?
Функию декодировки писать? |
|||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
Ну разве что процессор сменить на x64, там вроде как прямой порядок должен быть, если я все правильно понял из беглого прочтения. Насчет решения не подскажу... Вообще, вопрос интересный... Это сообщение отредактировал(а) mr.Anderson - 12.10.2008, 14:09 |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| mr.Anderson |
|
|||
![]() iOS Lead Developer ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3374 Регистрация: 20.12.2004 Где: далеко Репутация: нет Всего: 128 |
vinter, почему неправильно? Там написано, что такой порядок (обратный) характерен для архитектуры x86, поэтому я предположил, что на x64 такого уже нет, раз там не упоминается...
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |