簡體   English   中英

解碼像FAST這樣的數據協議的快速方法是什么,其中數據以字節為單位進行編碼,並將位作為存在標志?

[英]What is a fast way to decode a data protocol like FAST in which data is encoded in bytes with bits as existence flags?

像FAST這樣的用於編碼數據的協議在最小化需要發送的數據量方面非常聰明。 基本上一個得到一個char *,讀取前幾個字節作為一個整數給你一個id號,指向你如何解碼其余的指令(即它告訴你其余的字節,例如,respectivley一個int,一個字符串,一個unsigned int,另一個unsigned int,一個嵌套的消息等。)接下來的幾個字節告訴你(在每一位)后續字段是否存在。 保留每個字節中的第8位以表示數據之間的邊界。

如果沒有位操作的線性遍歷(並且,ors,移位,位檢查),解碼這樣的協議似乎是不可能的......有沒有辦法更快地做到這一點?

我認為你找不到比剛剛描述的更快的技術或方法。 這些協議旨在按順序解析它們。 繼續搜索的唯一原因是找到一種更方便的數據處理方式。

據我所知,有三種方式:

如果沒有位操作的線性遍歷(並且,ors,移位,位檢查),解碼這樣的協議似乎是不可能的......有沒有辦法更快地做到這一點?

FAST協議使用停止位方法對值進行編碼,換句話說,它按順序逐字節解析,直到它到達第8位設置為1的字節為止。在每個執行該操作的字節中丟失一點,但總體而言是快速編碼許多不同字段的方法,而不需要它們之間的分隔字節。

看看這篇關於CoralFIX的FAST支持的文章 它具有從交換XML模板文件生成的FAST解碼器的Java代碼示例。

免責聲明:我是CoralFIX的開發者之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM