![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Здравствуйте, как можно перевести int и float в набор байтов и обратно?может есть какаято copymemory или еще что то??
Это сообщение отредактировал(а) Graf_h - 27.5.2009, 17:44 -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 7 Всего: 50 |
||||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
набор байтов как вы будете хранить? в bitset? |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Alca, мне нужно именно перевод в байты, например число int a=5 должно быть представленно в виде 0#0#0#5, а потом обратно из байтов в число.
Добавлено через 1 минуту и 48 секунд zim22, у меня есть масив unsigned byte, мне нужно туда загнать все байты, и потом оттуда же и читать. -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Graf_h
число и так представлает из себя набор байтов. Вопрос в его представлении?
|
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
azesmcar, конечно байты, но ваш вариант не дает нужного результата. мне нужно получить все байты. если число int(4 байта) у меня и должны быть все 4 байта, а не один символ. Вопрос в том как их получить??
Это сообщение отредактировал(а) Graf_h - 27.5.2009, 18:44 -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
все 4 байта - это int. А у меня массив байтов.
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
если правильно применить дает
Добавлено через 1 минуту и 42 секунды azesmcar, без преобразования к инту выведет немножко не то, чего просит тс. |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
mes, может можно как то скопировать память?? ведь в памяти числа представлені байтами, вот взять єти 4 байта, и скопировать в масив байтов?псевдокод:
Есть в С что то подобное?? -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
mes, введите число 257 и выведите на экран: должно быть 0#0#2#255 а у вас дает непонятно что:(
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
не совсем понятно чего хочет ТС. скопировать в массив из 4 байтов? так преобразования достаточно Добавлено через 2 минуты и 32 секунды
У вас неправильное представление о хранении чисел в памяти. вот ваше число 257 в памяти 00000000 00000000 00000001 00000001 потому и печатает #0 #0 #1 #1 Добавлено через 3 минуты и 55 секунд 0#0#2#255 это 00000000 00000000 00000010 11111111 = 767 |
||||
|
|||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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;:( -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
есть. Только чтоб предложить Вам то, что Вам нужно, нужно понять, чего Вы хотите получить в итоге. для копирования памяти можно использовать memcpy a можно скопировать число прямиком в массив
можно использовать юнион
а можно вобще использовать без всяких копий, как показано выше, так как в памяти число так и так представлено набором байт. |
||||
|
|||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
почему не правильное, байт это от 0 до 255, правильно?? вот мне м нужно число типа инт представить в виде масиво байтов, а не битов. я же вивожу один байт а не бит. -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
интересно, а какое число тогда представлено так 255#255#255#255 ? следуя Вашей логике 1020 ? и это в 4х байтах! а ведь комп умудряется в 2х байтах хранить числа от 0-65535 поэтому советую Вам начать с книжки о представлении чисел в памяти эвм. |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
потому что данные в компьютере хранятся в двоичном формате. в итоге 257 хранится в памяти как 1 байт 2 байт 3 байт 4 байт 00000000 00000000 00000001 00000001 3 и 4 байт - равны единице. |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
mes, я просто хочу получить значение каждого из байтов и записать их вмасив передать по сети, а там вобратно восстановить
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
хотите увидеть #0#0#2#255
то и оперрируйте с этим числом :
|
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Добавлено @ 19:14 я так понимаю о проблемах big-endian, little-endian пока думать рано? Это сообщение отредактировал(а) azesmcar - 27.5.2009, 19:15 |
||||
|
|||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
mes,
блин, ступил. правильно! извиняюсь. memcpy работает -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
вот написал специально для Вас пример, показывающий каждое число инт в его байтовом представлении :
|
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
azesmcar,
Добавлено @ 19:27 mes, спасибо, уже в который раз выручаете, уже работает Это сообщение отредактировал(а) Graf_h - 27.5.2009, 19:29 -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
||||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
а что будет если перенести сервер на другую машину?? не факт что представления чисел будут одинаковыми:( -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
не важно, сервер всегда принимает в little-endian. Если ему нужно - пусть сам переворачивает. псевдокод
|
||||
|
|||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
||||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
а как узнать как в машине представленны числа?? -------------------- Иногда переменная - это просто переменная |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Graf_h
Я же ссылку на вики прислал. Вы бы посмотрели. особенно раздел Проблемы совместимости цитирую код
Это сообщение отредактировал(а) azesmcar - 27.5.2009, 19:40 |
|||
|
||||
| zim22 |
|
|||
|
depict1 ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2682 Регистрация: 15.1.2009 Где: Украина Репутация: 24 Всего: 69 |
значит опрашивайте сервер на порядок байтов. |
|||
|
||||
| fry |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 257 Регистрация: 4.10.2006 Репутация: нет Всего: 3 |
http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%...%82%D0%BE%D0%B2
Почитай про сетевой порядок байт и конвертирование в оный И не надо "договариваться" клиенту и серверу о порядке байтов. Это сообщение отредактировал(а) fry - 27.5.2009, 19:48 |
|||
|
||||
| Graf_h |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 482 Регистрация: 18.10.2007 Где: г. Ровно, Украина Репутация: 2 Всего: 5 |
Всем спасибо, разобрался наконец
-------------------- Иногда переменная - это просто переменная |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |