Библиотеки: TypeToBytes - страница 2

 
Rashid Umarov:
Исходники обновили в публикации?
Нет, исходники старые. Это у Вас новые возможности
double Nan = (double)"nan";
 
fxsaber:
может сделаешь класс для работы TypeToBit ?

для плотной упаковки данных и их передачу по типу биржевого fast.
 
o_O:
может сделаешь класс для работы TypeToBit ?

для плотной упаковки данных и их передачу по типу биржевого fast.
Не понял, что имеется в виду.
 
есть межбанковский протокол fast (на той же micex юзают для котировочного фида)

в нём данные передаются без лишних байт равных 0.

например 4 байтовый int = 32 бита.

допустим у переменной значение =1.  Это значит, что протокол отправит только один бит (=1). вместо положенных 32 (00000000000000000000000000000001).

Если например =16, то это передасться 5 бит (=10000).

Вобщем битовое представление данных колоссально сокращает трафик.

----

библа по идее должна уметь упаковывать переданную структуру в такую битовую форму и читать её обратно (или возвращать нужные данные из упакованной структуры).

у фаста конечно и другие фичи, но интересна только эта его особенность упаковки.
 
ArrayPrint(_R(Num).Bits); // Распечатали fast-биты

Такое? Это uchar-массив, где каждый элемент, соответствующий fast-бит.

 

Похоже, понял. Есть массив какого-то типа, он преобразовывася в uchar-массив из fast-битов.

Например, массив {1, 2, 4} -> массив {7}. И обратное преобразование, конечно.

 
fxsaber:
ArrayPrint(_R(Num).Bits); // Распечатали fast-биты

Такое? Это uchar-массив, где каждый элемент, соответствующий fast-бит.

 

Похоже, понял. Есть массив какого-то типа, он преобразовывася в uchar-массив из fast-битов.

Например, массив {1, 2, 4} -> массив {7}. И обратное преобразование, конечно.

есть struct

{
   int type;
   long time;
}

допусти type=10, time=1486758079

байтовое представление будет
00000000 00000000 00000000 00001010   |    00000000 00000000 00000000 00000000 01011000 10011110 00100000 10111111

а в виде fast (утрированно)

00001010   |    01011000 10011110 00100000 10111111 

итого 5 байт.  Экономия в два раза.

 (тут еще должен быть разделяющий данные стоп-бит, но в общем суть показана)
 
o_O:
есть struct

{
   int type;
   long time;
}

допусти type=10, time=1486758079

байтовое представление будет
00000000 00000000 00000000 00001010   |    00000000 00000000 00000000 00000000 01011000 10011110 00100000 10111111

а в виде fast (утрированно)

00001010   |    01011000 10011110 00100000 10111111   (тут еще должен быть разделяющий данные стоп-бит, но в общем суть показана)
вы ещё ASN.1 помяните с его (её?) BER/DER/XDR кодированием :-)
 
o_O:
00001010   |    01011000 10011110 00100000 10111111 

итого 5 байт.  Экономия в два раза.

 (тут еще должен быть разделяющий данные стоп-бит, но в общем суть показана)
Как раз таки не очевидно, что может служить таким разделителем.
 
fxsaber:
Как раз таки не очевидно, что может служить таким разделителем.
http://www.jettekfix.com/node/36
Hello World Example | jettekfix.com
Hello World Example | jettekfix.com
  • www.jettekfix.com
To introduce the encoding and decoding process, we describe how a trivial message with only 1 field would be FAST encoded and decoded. Input Message Here's the message we'll start with: The SOH (ASCII 1) is the FIX separator byte. The Template This message requires a very simple template (expressed in XML and described in greater detail in...
 
o_O:
http://www.jettekfix.com/node/36

Если правильно понял, то предлагается 8-й бит каждого байта сделать тем самым разделителем. 

Причина обращения: