Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под *nix > C++ на Unix
Перезагрузить страницу Как подправить написанный программный код
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
exec exec вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.03.2011
По умолчанию Как подправить написанный программный код - 02.03.2011, 15:23

при компиляции почему то получаются значения в виде байта 05h 04h
а надо 45h
как бы подправить

cpp Код:
struct ipheader {
     unsigned char      iph_ihl:5, /* Little-endian */
                        iph_ver:4;  /*  Little-байтов */
     unsigned char      iph_tos;
     unsigned short int iph_len;
     unsigned short int iph_ident;
     unsigned char      iph_flags;
     unsigned short int iph_offset;
     unsigned char      iph_ttl;
     unsigned char      iph_protocol;
     unsigned short int iph_chksum;
     unsigned int       iph_sourceip;
     unsigned int       iph_destip;
    };
Ответить с цитированием
  (#2 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,397
Сказал(а) спасибо: 22
Поблагодарили 937 раз(а) в 921 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 02.03.2011, 17:50

0x45 это один байт, а у тебя два отдельных
Ответить с цитированием
  (#3 (permalink)) Старый
exec exec вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.03.2011
По умолчанию 02.03.2011, 18:26

как правильно тогда должна выглядить строчка?
при условии что переменные iph_ihl iph_ver далее тоже будут использоваться?
обращения будут такие
iph->iph_ihl = 5;
iph->iph_ver = 4;
iph->iph_tos = 0;
Ответить с цитированием
  (#4 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,397
Сказал(а) спасибо: 22
Поблагодарили 937 раз(а) в 921 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 02.03.2011, 18:29

М.б.
cpp Код:
struct ipheader {
     unsigned char      iph_ihl_ver;
Вообще непонятно, что ты хочешь получить, поэтому как должна выглядеть - неизвестно.
Какая связь между числами 05h 04h и битовыми полями шириной 5 и 4 бит?
Ответить с цитированием
  (#5 (permalink)) Старый
exec exec вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.03.2011
По умолчанию 02.03.2011, 18:57

строится пакет ip и он должен быть примерно таким:

00 15 f2 e9 42 a8 00 17 95 27 0a 37 08 00 45 00 ......
а получаем:
00 15 f2 e9 42 a8 00 1d 60 48 b4 c7 08 00 05 04 ........
Ответить с цитированием
Ads.
  (#6 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,397
Сказал(а) спасибо: 22
Поблагодарили 937 раз(а) в 921 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 02.03.2011, 19:12

a = 0x5;
b = 0x4;
c = a | (b << 4);

c == 0x45;
Ответить с цитированием
  (#7 (permalink)) Старый
exec exec вне форума
Новичок
 
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.03.2011
По умолчанию 03.03.2011, 10:25

это я понимаю, можно вообще упростить
int c=45
но есть структура программы, в нее надо вписаться, вопрос тока как?
Ответить с цитированием
  (#8 (permalink)) Старый
Rius Rius вне форума
Программист
 
Аватар для Rius
 
Сообщений: 7,397
Сказал(а) спасибо: 22
Поблагодарили 937 раз(а) в 921 сообщениях
Регистрация: 27.08.2004
Адрес: Russian Federation
По умолчанию 03.03.2011, 11:15

есть структура
cpp Код:
struct ipheader {
     unsigned char      iph_ihl_ver;
...
для записи значения в структуру: iph_ihl_ver = a | (b << 4);
для чтения:
a = iph_ihl_ver & 0x0f;
b = (iph_ihl_ver & 0xf0) >> 4;

или
cpp Код:
struct ipheader {
     unsigned char      iph_ihl: 4;
     unsigned char      iph_vel: 4;
...
a = iph_ihl;
b = iph_ver;

в чём сложность-то?
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помощь по Visual С++(подправить код) tema65 Любые вопросы от новичков 1 27.12.2011 14:04
Посоветуйте, что можно подправить. RazerStas Оценка конфигурации 9 19.07.2011 16:55
Требуется подправить задачу на функции Наталька С/С++ 7 04.06.2011 03:38
Требуется подправить задачу Наталька C++ Builder 11 23.05.2011 23:02
Не работает написанный код Сережа C++ Builder 2 11.05.2011 05:34
пожалуйста, помогите подправить программу gali Prolog 1 09.05.2010 19:15
Как конвертировать написанный программный код Ar][Devil Visual C++ 3 20.06.2009 11:56
Помогите, подправить программу. Louve Prolog 3 17.04.2008 19:20
Помогите подправить скрипт duron DHTML, JavaScript, VBScript 1 20.09.2006 20:02
Как отладить написанный запрос cpper MSSQL Server 4 24.08.2005 11:51
AviBuilder как исправить написанный код st.andrew Delphi 0 20.05.2005 22:15
Как установить написанный курсор Skywalker-cyb WinAPI 12 16.01.2003 15:41



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов