Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перевод данных в набор байтов 
:(
    Опции темы
Graf_h
Дата 27.5.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: 2
Всего: 5



Здравствуйте, как можно перевести int и float в набор байтов и обратно?может  есть какаято copymemory или еще что то??

Это сообщение отредактировал(а) Graf_h - 27.5.2009, 17:44


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
Alca
Дата 27.5.2009, 18:04 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 7
Всего: 50





--------------------
PM WWW ICQ Skype Jabber   Вверх
zim22
Дата 27.5.2009, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


Профиль
Группа: Завсегдатай
Сообщений: 2682
Регистрация: 15.1.2009
Где: Украина

Репутация: 24
Всего: 69



Цитата(Graf_h @  27.5.2009,  17:41 Найти цитируемый пост)
перевести int и float в набор байтов и обратно?

набор байтов как вы будете хранить? в bitset?


--------------------
PM MAIL   Вверх
Graf_h
Дата 27.5.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: 2
Всего: 5



Alca, мне нужно именно перевод в байты, например число int a=5 должно быть представленно в виде 0#0#0#5, а потом обратно из байтов в число.

Добавлено через 1 минуту и 48 секунд
zim22, у меня есть масив unsigned byte, мне нужно туда загнать все байты, и потом оттуда же и читать.


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
azesmcar
Дата 27.5.2009, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Graf_h

число и так представлает из себя набор байтов. Вопрос в его представлении?
Код

int v = 5;
char *k = (char*)&v;

PM   Вверх
Graf_h
Дата 27.5.2009, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: 2
Всего: 5



azesmcar, конечно байты, но ваш вариант не дает нужного результата. мне нужно получить все байты. если число int(4 байта) у меня и должны быть все 4 байта, а не один символ. Вопрос в том как их получить??


Это сообщение отредактировал(а) Graf_h - 27.5.2009, 18:44


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
azesmcar
Дата 27.5.2009, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Graf_h @  27.5.2009,  18:37 Найти цитируемый пост)
azesmcar, конечно байты, но ваш вариант не дает нужного результата. мне нужно получить все байты. если число int(4 байта) у меня и должны быть все 4 байта, а не один символ. Вопрос в том как их получить?? 

все 4 байта - это int. А у меня массив байтов.
Код

int v = 5;
char *k = (char*)&v;
cout << k[0] << endl;
cout << k[1] << endl;
cout << k[2] << endl;
cout << k[3] << endl;

PM   Вверх
mes
Дата 27.5.2009, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Graf_h @  27.5.2009,  17:37 Найти цитируемый пост)
azesmcar, конечно байты, но ваш вариант не дает нужного результата. мне нужно получить все байты. если число int(4 байта) у меня и должны быть все 4 байта, а не один символ. Вопрос в том как их получить?? 

если правильно применить дает

Код

 int value =5;
 for (unsigned i=sizeof(value); i--; )
 std::cout << "#"<<(int)*((char*)&value +i)<<" ";


Добавлено через 1 минуту и 42 секунды
azesmcar, без преобразования к инту выведет немножко не то, чего просит тс.  smile 


--------------------
PM MAIL WWW   Вверх
Graf_h
Дата 27.5.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: 2
Всего: 5



mes, может можно как то скопировать память?? ведь в памяти числа представлені байтами, вот взять єти 4 байта, и скопировать в масив байтов?псевдокод:
Код

char* bytes=new char[4]
int a=1234;

copymemory(bytes,a);


Есть в С что то подобное?? 


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
azesmcar
Дата 27.5.2009, 18:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Graf_h @  27.5.2009,  18:48 Найти цитируемый пост)
Есть в С что то подобное?? 

memcpy

PM   Вверх
Graf_h
Дата 27.5.2009, 18:56 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: 2
Всего: 5



mes, введите число 257 и выведите на экран: должно быть 0#0#2#255 а у вас дает непонятно что:(


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
azesmcar
Дата 27.5.2009, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(mes @  27.5.2009,  18:42 Найти цитируемый пост)
azesmcar, без преобразования к инту выведет немножко не то, чего просит тс.  smile  

не совсем понятно чего хочет ТС.
скопировать в массив из 4 байтов? так преобразования достаточно smile

Добавлено через 2 минуты и 32 секунды
Цитата(Graf_h @  27.5.2009,  18:56 Найти цитируемый пост)
mes, введите число 257 и выведите на экран: должно быть 0#0#2#255 а у вас дает непонятно что:( 

У вас неправильное представление о хранении чисел в памяти.

вот ваше число 257 в памяти
00000000 00000000 00000001 00000001
потому и печатает
#0 #0 #1 #1

Добавлено через 3 минуты и 55 секунд
0#0#2#255
это
00000000 00000000 00000010 11111111 = 767
PM   Вверх
Graf_h
Дата 27.5.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: 2
Всего: 5



azesmcar, да я пробовал с memcpy:
 unsigned char buffer [4];
  int a=257
 
 
  memcpy(buffer,(void*)&a,sizeof(int));

  printf("%d",buffer[0]);
  printf("%d",buffer[1]);
  printf("%d",buffer[2]);
  printf("%d",buffer[3]);

выводит 1,1,0,0;:(


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
mes
Дата 27.5.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Graf_h @  27.5.2009,  17:48 Найти цитируемый пост)
Есть в С что то подобное??  

есть. Только чтоб предложить Вам то, что Вам нужно, нужно понять, чего Вы хотите получить в итоге.

для копирования памяти можно использовать memcpy
a можно скопировать число  прямиком в массив
Код

  unsigned char bytes[sizeof(int)];
  int i=7;
  *((int*)bytes) = i;

можно использовать юнион
Код

union int2byte
{
    int value;
    unsigned char bytes[sizeof(value)];
};

а можно вобще использовать без всяких копий, как показано выше, так как в памяти число так и так представлено набором байт. 




--------------------
PM MAIL WWW   Вверх
azesmcar
Дата 27.5.2009, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Graf_h @  27.5.2009,  19:02 Найти цитируемый пост)
выводит 1,1,0,0;:( 

верно. так и должно быть.
PM   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0607 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.