一種二進位制資料交換協議的設想

2021-08-31 17:08:28 字數 722 閱讀 6961

json 是一種相當舒服的資料表示方法,因此常常作為鬆散整合的各服務之間的訊息承載協議。其優點在我看來有:

1. 語法簡單,容易解析和流化

2. 表達能力雖然不十分強悍,但足以應付大多數場景

3. 有自描述能力,無需額外的介面定義語言

4. 資料中包含了基本的型別資訊,便於程式自動化處理

5. 和程式中的常用資料結構有較好的對應

6. 文字協議帶來的透明性和易於除錯

但仍有不足,主要在於:

1. object 表示法,對於大量同型別資料,將產生大量的屬性名冗餘

2. 承載二進位制內容會導致大量的轉義開銷

3. 型別應該更豐富一點

最近剛好工作中略有涉及,我就想能否設計乙個二進位制表示法能夠繼承 json 的大多數有點,並彌補其缺點,具體說來包含如下特點:

1. 協議簡單,一頁紙可以描述

2. 編碼效率高

越常用的資料應該尺寸越少,包括:null/true/false 以及一些小整數,最好能乙個位元組搞定

字串可以在同乙份文件中被反覆引用

被引用的資料即可以預先定義,也可以在第一次出現時隱式定義

3. 和程式中的資料結構容易對應

區分不可更改的 string 和可更改的 blob

區分不可更改的 tuple 和可更改的 array

取消 object 型別,而支援更加面向資料的概念 dictionary

增加自定義型別的支援

一種通用的樹形二進位制協議描述方法與處理演算法

概述 本方法定義了一種資料結構,可用於描述任意的樹形二進位制協議,並配合乙個特定的處理演算法,可實現一種通用的,由該種樹形二進位制協議定義的位元流解析與填充的處理,該資料結構的定義如下 以下結構用於定義乙個協議節點的描述資訊。struct proto bits info typedef struct...

二進位制字元檔案轉二進位制的3種姿勢

今天學弟問了乙個ctf題,是關於二進位制字元檔案轉二進位制檔案的問題。自己用了乙個struct庫解出來了,是這樣的 import struct f open num.txt r fout open res.txt ab data f.read for i in range 0,len data 16...

讀取二進位制檔案的一種簡單方法

讀取二進位制檔案 二進位制檔案 string filename eventtextbox.text 讀取檔案制檔案的長度 filestream mystream new filestream filename,filemode.open,fileaccess.read binaryreader my...