Форум программистов, компьютерный форум CyberForum.ru

Побитовые операции msb и lsb - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Написать функции для работы с динамическим массивом http://www.cyberforum.ru/cpp-beginners/thread1094302.html
Дали вот эти задачи никак не могу решить, помогите. 1. Написать следующие функции для работы с динамическим массивом: a. Функция распределения динамической памяти. b. Функция инициализации динамического массива. c. Функция печати динамического массива. d. Функция удаления динамического массива. e. Функция добавления элемента в конец массива. f. Функция вставки элемента по указанному...
C++ Кто нибудь можете подсказать, есть ли вообще программы конверторы с языка c++ в паскаль Кто нибудь можете подсказать, есть ли вообще программы конверторы с языка c++ в паскаль http://www.cyberforum.ru/cpp-beginners/thread1094298.html
C++ Является ли матрица магическим квадратом
Является ли матрица магическим квадратом
C++ Найти сумму целых положительных чисел, больших 30 и меньших 100 кратных трем с помощью цикл While
Найти сумму целых положительных чисел, больших 30 и меньших 100 кратных трем. Я сделал но вот оказалась что нужно через while а не for но вот у меня не чего не получается! #include <stdio.h> void main(void) { int sum = 0; for (int i = 21; i < 100; ++i)
C++ Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка http://www.cyberforum.ru/cpp-beginners/thread1094270.html
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка, цена, цвет . Вывести список магазинов, в которых имеется заданная марка машины, заданного цвета. Найти магазин, в котором работает заданный сотрудник и вывести информацию о нем.
C++ отнять последний столбец из всех кроме последнего из двухмерного массива отнять последний столбец из всех кроме последнего подробнее

Показать сообщение отдельно
ustus_alex
6 / 6 / 1
Регистрация: 22.11.2013
Сообщений: 99
11.02.2014, 18:07     Побитовые операции msb и lsb
Доброго дня,

подскажите пожалуйста, как можно справиться со следующей задачей:

есть некоторое сообщение, которое летает по CAN шине, примерно следующего формата:

121.112160___2___FD___Rxd___8___ 0D D2 1F 80 98 0B 00 00.

Мне в нем интересны 4 и 5 байты, с соответствующими значениями 0x98 и 0x0B. Эти два байта характеризует один из параметров.

Так как в 47 бите определени msb, а в 32 lsb, сообщение читаем справо налево и имеем значение параметра: 0x0B98.

Как можно организовать подобного рода конвертацию?

Добавлено через 2 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct tCData
{
    struct tData
    {
        int     Id;             
        int     Length;          
        int     Reserved;        
        int     Flags;         
        int     Reserved;       
        int     Reserved;       
        int     Data[8];        //data field
    };
};
 
int main()
{
    tCData::tData* pDataField = new tCData::tData;
    pDataField->Data[4]=0x98;
    pDataField->Data[5]=0x0B;
 
    delete pDataField;
    return 0;
}
Добавлено через 48 минут
мой примитивный вариат, после недолгих раздумий, со вставкой inline assembler:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
using namespace std;
struct tCData
{
    struct tData
    {
        int     Id;             
        int     Length;          
        int     Reserved;        
        int     Flags;                 
        int     Data[8];        //data field
    };
};
 
int main()
{
    unsigned char  r1, r2;
    short result=NULL;
 
    tCData::tData* pDataField = new tCData::tData;
    pDataField->Data[4]=0x98;
    pDataField->Data[5]=0x0B;
    r1=pDataField->Data[4];
    r2=pDataField->Data[5];
 
    __asm
 
    {
        mov ah,    r2
        mov al,     r1
        mov result,ax
    }
 
    cout<<result<<endl;
 
    delete pDataField;
    system ("pause");
    return 0;
}
Проблема в том, что мне нужна конвертация в 64 битной рабочей среде, а inline assembler в ней не пашет...
Есть иные идеи?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 22:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru