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...