int32 читать побитово
От: zoom-zoom  
Дата: 06.11.15 10:03
Оценка:
День добрый.
Никак не разберусь с классификацией побитовой. Пишу на C#.

Есть некий сервер, который возвращает параметр Param1.
В Руководстве к данному ПО написано:
Param1 — тип int32.
Примечание:
Поле Param1 выдается (по битово):
0x0 — Статус1
0x01 — Статус2
0x02 — Статус3
0x04 — Статус4
0x08 — Статус5
0x10 — Статус6

В данный момент мне сервер присылает значение Param1 = 1.
Как мне понять, какому статусу (Статус1, Статус2...) соответствует значение "1"?
Отредактировано 06.11.2015 10:06 zoom-zoom . Предыдущая версия .
Re: int32 читать побитово
От: Sinix  
Дата: 06.11.15 10:39
Оценка: +1
Здравствуйте, zoom-zoom, Вы писали:

ZZ>0x01 — Статус2.

ZZ>Как мне понять, какому статусу (Статус1, Статус2...) соответствует значение "1"?

В смысле? Шестнадцатеричную систему счисления программистам уже не выдают?

Если вопрос не про "что такое base16":
Как минимум endianess должен быть оговорен. См
http://stackoverflow.com/questions/217980/c-sharp-little-endian-or-big-endian

Для десктопной win (little endian), или если значение приходит уже в виде int — просто используйте enum с соответствующими значениями.
Отредактировано 06.11.2015 10:40 Sinix . Предыдущая версия .
Re: int32 читать побитово
От: fdn721  
Дата: 06.11.15 10:58
Оценка:
Здравствуйте, zoom-zoom, Вы писали:

ZZ>День добрый.

ZZ>Никак не разберусь с классификацией побитовой. Пишу на C#.

ZZ>Есть некий сервер, который возвращает параметр Param1.

ZZ>В Руководстве к данному ПО написано:
ZZ>Param1 — тип int32.
ZZ>Примечание:
ZZ>Поле Param1 выдается (по битово):
ZZ>0x0 — Статус1
ZZ>0x01 — Статус2
ZZ>0x02 — Статус3
ZZ>0x04 — Статус4
ZZ>0x08 — Статус5
ZZ>0x10 — Статус6

ZZ>В данный момент мне сервер присылает значение Param1 = 1.

ZZ>Как мне понять, какому статусу (Статус1, Статус2...) соответствует значение "1"?

Значение 1 соответствует статусу 2.
Значение 2 соответствует статусу 3.
Значение 3 соответствует статусу 2 и 3.

Дальше догадаешься?
Отредактировано 06.11.2015 10:59 fdn721 . Предыдущая версия .
Re[2]: int32 читать побитово
От: zoom-zoom  
Дата: 06.11.15 11:22
Оценка: :))
Здравствуйте, fdn721, Вы писали:

F>Здравствуйте, zoom-zoom, Вы писали:


ZZ>>День добрый.

ZZ>>Никак не разберусь с классификацией побитовой. Пишу на C#.

ZZ>>Есть некий сервер, который возвращает параметр Param1.

ZZ>>В Руководстве к данному ПО написано:
ZZ>>Param1 — тип int32.
ZZ>>Примечание:
ZZ>>Поле Param1 выдается (по битово):
ZZ>>0x0 — Статус1
ZZ>>0x01 — Статус2
ZZ>>0x02 — Статус3
ZZ>>0x04 — Статус4
ZZ>>0x08 — Статус5
ZZ>>0x10 — Статус6

ZZ>>В данный момент мне сервер присылает значение Param1 = 1.

ZZ>>Как мне понять, какому статусу (Статус1, Статус2...) соответствует значение "1"?

F>Значение 1 соответствует статусу 2.

F>Значение 2 соответствует статусу 3.
F>Значение 3 соответствует статусу 2 и 3.

F>Дальше догадаешься?


Статусов 2 и 3 не может быть одновременно. Param1 сейчас пришел равным 16. Как его интерпретировать, пока не догадался.
Re[3]: int32 читать побитово
От: zoom-zoom  
Дата: 06.11.15 11:36
Оценка:
Здравствуйте, zoom-zoom, Вы писали:

ZZ>Здравствуйте, fdn721, Вы писали:


F>>Здравствуйте, zoom-zoom, Вы писали:


ZZ>>>День добрый.

ZZ>>>Никак не разберусь с классификацией побитовой. Пишу на C#.

ZZ>>>Есть некий сервер, который возвращает параметр Param1.

ZZ>>>В Руководстве к данному ПО написано:
ZZ>>>Param1 — тип int32.
ZZ>>>Примечание:
ZZ>>>Поле Param1 выдается (по битово):
ZZ>>>0x0 — Статус1
ZZ>>>0x01 — Статус2
ZZ>>>0x02 — Статус3
ZZ>>>0x04 — Статус4
ZZ>>>0x08 — Статус5
ZZ>>>0x10 — Статус6

ZZ>>>В данный момент мне сервер присылает значение Param1 = 1.

ZZ>>>Как мне понять, какому статусу (Статус1, Статус2...) соответствует значение "1"?

F>>Значение 1 соответствует статусу 2.

F>>Значение 2 соответствует статусу 3.
F>>Значение 3 соответствует статусу 2 и 3.

F>>Дальше догадаешься?


ZZ>Статусов 2 и 3 не может быть одновременно. Param1 сейчас пришел равным 16. Как его интерпретировать, пока не догадался.


Еще пришло значение Param1 = 5136. Тоже не ясно, как его интерпретировать. Нашел на форуме разъяснение о том, что нужно оперировать в 16-тиричном представлении:
5136 = 0x1410

Но я не пойму, как конвертировать int32 (5136) и получить 0x1410.
Re: int32 читать побитово
От: vitz  
Дата: 06.11.15 11:52
Оценка:
Здравствуйте, zoom-zoom, Вы писали:

ZZ>День добрый.

ZZ>Никак не разберусь с классификацией побитовой. Пишу на C#.

ZZ>Есть некий сервер, который возвращает параметр Param1.

ZZ>В Руководстве к данному ПО написано:
ZZ>Param1 — тип int32.
ZZ>Примечание:
ZZ>Поле Param1 выдается (по битово):
ZZ>0x0 — Статус1
ZZ>0x01 — Статус2
ZZ>0x02 — Статус3
ZZ>0x04 — Статус4
ZZ>0x08 — Статус5
ZZ>0x10 — Статус6

ZZ>В данный момент мне сервер присылает значение Param1 = 1.

ZZ>Как мне понять, какому статусу (Статус1, Статус2...) соответствует значение "1"?
[Flags]
public enum Params
{
    State0 = 0,
    State1 = 1,
    State2 = 1 << 1,
    State3 = 1 << 2,
    State4 = 1 << 3,
    State5 = 1 << 4,
    State6 = 1 << 5,
    State7 = 1 << 6,
    State8 = 1 << 7,
    State9 =  1 << 8,
    State10 = 1 << 9,
    State11 = 1 << 10,
    State12 = 1 << 11,
    State13 = 1 << 12,
    State14 = 1 << 13,
    State15 = 1 << 14,
    State16 = 1 << 15,
    ...
}
var param1 = (Params)Param1;
param1.HasFlag(Params.State1);
Re[4]: int32 читать побитово
От: Sinix  
Дата: 06.11.15 11:53
Оценка: +2
Здравствуйте, zoom-zoom, Вы писали:

ZZ>Но я не пойму, как конвертировать int32 (5136) и получить 0x1410.

http://www.wolframalpha.com/input/?i=5136+to+base+16

Только оно вам не надо. См http://stackoverflow.com/a/10558687

P.S. А вот матчасть всё-таки учить надо, если вы программист конечно.
Re: int32 читать побитово
От: bt  
Дата: 06.11.15 15:01
Оценка: :)
Здравствуйте, zoom-zoom, Вы писали:

ZZ>В данный момент мне сервер присылает значение Param1 = 1.

ZZ>Как мне понять, какому статусу (Статус1, Статус2...) соответствует значение "1"?

Статус 2
Re[3]: int32 читать побитово
От: bt  
Дата: 06.11.15 15:02
Оценка:
Здравствуйте, zoom-zoom, Вы писали:


ZZ>Статусов 2 и 3 не может быть одновременно. Param1 сейчас пришел равным 16. Как его интерпретировать, пока не догадался.


Статус 6
Re[4]: int32 читать побитово
От: bt  
Дата: 06.11.15 15:11
Оценка:
Здравствуйте, zoom-zoom, Вы писали:


ZZ>Еще пришло значение Param1 = 5136. Тоже не ясно, как его интерпретировать. Нашел на форуме разъяснение о том, что нужно оперировать в 16-тиричном представлении:

ZZ>5136 = 0x1410

Статус 3,4,5,6,8,11,13
Re[5]: int32 читать побитово
От: vitz  
Дата: 06.11.15 15:51
Оценка: +1
Здравствуйте, bt, Вы писали:

bt>Здравствуйте, zoom-zoom, Вы писали:



ZZ>>Еще пришло значение Param1 = 5136. Тоже не ясно, как его интерпретировать. Нашел на форуме разъяснение о том, что нужно оперировать в 16-тиричном представлении:

ZZ>>5136 = 0x1410

bt>Статус 3,4,5,6,8,11,13

откель так много то?
0001 0100 0001 0000
Отредактировано 06.11.2015 15:52 vitz . Предыдущая версия .
Re[6]: int32 читать побитово
От: bt  
Дата: 07.11.15 18:04
Оценка:
Здравствуйте, vitz, Вы писали:

V>Здравствуйте, bt, Вы писали:


bt>>Здравствуйте, zoom-zoom, Вы писали:



ZZ>>>Еще пришло значение Param1 = 5136. Тоже не ясно, как его интерпретировать. Нашел на форуме разъяснение о том, что нужно оперировать в 16-тиричном представлении:

ZZ>>>5136 = 0x1410

bt>>Статус 3,4,5,6,8,11,13

V>откель так много то?
V>0001 0100 0001 0000

Таки, да.
От спешки.
Спешка до добра не доводит.

Но в двух предыдущих сообщениях я не ошибся?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.