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

Поиск:

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


Новичок



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

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



Здравствуйте господа!

Прошу помощи в таком вопросе: как можно разделелить двухбайтную переменную на две однобайтных, т.е. на LowByte и на HiByte.

вот примерный код:

Код

cyg_uint16 measurement = 0FFFH; //текущая переменная которую нужно разделить
cyg_uint8 LowByte, HIByte; // 8 битовые переменные в которые нужно поместить 16 битовую переменную measuremen
.
.
а вот дальше никаких мыслей, хотя должно быть просто
.

PM MAIL   Вверх
dargaard
Дата 24.6.2004, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 450
Регистрация: 7.5.2004

Репутация: 4
Всего: 25



ne znaiu pravilno li tak no vrode rabotaet:)

#include <stdio.h>
#include <stdlib.h>

int main() {
short int measur = 0xabcd;
char arr[2];

memcpy(arr,&measur,2);
printf("%x = %x %x \n",measur,arr[0],arr[1]);
}


vidast - ffffabcd = ffffffcd ffffffab



--------------------
Ты должна сделать добро из зла 
потому что его больше не из чего
сделать. Р.П.Уоррен
PM MAIL WWW ICQ   Вверх
ivanABIch
Дата 24.6.2004, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Большое спасибо, сейчас попробую!
PM MAIL   Вверх
shedon
Дата 24.6.2004, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



или так:
Код

__int16 iMeasurement = 0x0FF8;
__int8 iLowByte, iHiByte;
iLowByte = (__int8)iMeasurement;
iHiByte = (__int8)(iMeasurement>>8);



--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
bel_nikita
Дата 24.6.2004, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



dargaard - оригинально smile.gif
Цитата
iHiByte = (__int8)(iMeasurement>>8);
а зачем приводить к (__int8) ? Мне кажется это лишнее. Ну разве, что компилер может варнингнуться.
Цитата
cyg_uint16 measurement=0xAA55;
cyg_uint8 LowByte, HIByte;
LowByte=measurement&0x00FF;
HIByte=measurement>>8;




--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
shedon
Дата 24.6.2004, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1209
Регистрация: 17.1.2003
Где: Нижнiй Новгородъ

Репутация: 4
Всего: 11



Цитата
Ну разве, что компилер может варнингнуться.

Именно по этому, не люблю варнинги, и в некоторых случаях могут быть глюки.
А по большому счёту это равносильно твоему &0x00FF;


--------------------
Programming is like sex: One mistake and you have to support it your lifetime
PM MAIL WWW ICQ   Вверх
AndyY
Дата 25.6.2004, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



dargaard
копирование лишнее:
WORD w=0x1234;
BYTE *pbytes = (byte*)&w;

соответственно pbytes[0] и от pbytes[1]



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


Опытный
**


Профиль
Группа: Экс. модератор
Сообщений: 450
Регистрация: 7.5.2004

Репутация: 4
Всего: 25



AndyY
A eto uzhe zavisit ot uslovia. Mozhet u nego v dalneishem measurement izmeniaetsa, a high i low nado hranit' prezhnii.



--------------------
Ты должна сделать добро из зла 
потому что его больше не из чего
сделать. Р.П.Уоррен
PM MAIL WWW ICQ   Вверх
Олег М
Дата 25.6.2004, 05:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну и ещё один способ. До кучи.

Код
union _WORD
{
struct
{
BYTE Low;
BYTE High;
};
WORD word;
};

PM MAIL ICQ   Вверх
ivanABIch
Дата 25.6.2004, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



dargaard прав на счёт условий да measurement меняется, но хранить разделённые данные не нужно, это разделение было необходимо только потому что железяка понимает только байты. Данные потоком выбрасываются на outout module.

Всем спасибо за быстрые, и главное дельные советы.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.0780 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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