sol文件解析(數(shù)據(jù)區(qū))

sol數(shù)據(jù)區(qū)是按照key-value方式存儲的喷斋,存儲的順序是:key的長度-key-value類型-value長度(僅字符串)-value-00.
其中key的長度是按2n+1(n為長度)計算的啤斗,如0x05換算為長度是2
key是根據(jù)前面的長度取隨后的幾個字節(jié),若前面長度是2那就應(yīng)該取0x05后的兩個字節(jié)做為key,sol默認為utf-8格式的所以如果是windows系統(tǒng)下中文key或者value的需要指定UTF-8字符集膨疏。
接下來是value的類型致稀,類型我也并未解析完全。

  • 02 邏輯非
  • 03 邏輯是
  • 04 整型
  • 05 長整赚窃,小數(shù)
  • 06 字符册招,字符串
  • 09 數(shù)組
  • 0a Object對象
    以上所有類型后面都接00。

邏輯值解析(02勒极,03)

邏輯值解析比較簡單是掰,因為是和非是分開處理的所以02,03既是類型也是值辱匿。如下是isA=true的解析示例

邏輯值解析

字符&字符串解析(06)

字符串解析也較簡單键痛,在類型06后面會跟value長度(長度也是按2n+1的方式計算),隨后是value值炫彩,這里需要注意的是sol默認編碼為utf-8,所以注意windows系統(tǒng)下中文需要對編碼進行utf8處理絮短。如下是name=左拖拖的解析示例

字符串值解析
字符串處理還有一種特殊情況有別于上面介紹的處理方法江兢,當key和value相同時value的長度會變?yōu)橐粋€偶數(shù)且沒有value值,長度后面直接跟結(jié)束符00丁频。這種情況的處理比較簡單杉允,我們知道長度是2n+1永遠是奇數(shù),如果長度為偶數(shù)則說明value等于key席里,我們直接將key賦值給vaue即可叔磷。如下是sa=sa的解析示例
字符串key=value時處理

整數(shù)解析(04)

sol整數(shù)范圍是-228 ~ 228-1,其中02<sup>21</sup>-1為小整胁勺,2<sup>21</sup>228-1為大整世澜,sol對小整,大整以及負數(shù)的處理都是不同的署穗。

  • 小整 最低位從007f其余位從80ff寥裂,最低位大于7f時產(chǎn)生進位
  • 大整 占用4個字節(jié),最低位從00ff其余位從80ff
  • 負數(shù) 占用4個字節(jié)案疲,最低位從ff00封恰,其余位從ff80
    舉個小整的例子:04 86 a0 2d 00
    1). 04是類型,00是結(jié)束符褐啡,中間的位數(shù)表示值诺舔。
    2). 最低位2d不做處理
    3). 除了最低位從007f,其余位從80ff,所以其余位需要減掉80
    4). 第二位a0的處理: (a0 - 80) x 80
    5). 第三位86的處理: (86 - 80) x 80 x 80
    6). 最后將三位的結(jié)果相加即可: 98304 + 4096 + 45 = 102445
    大整與小整的處理方式相同,只是進位從80變成為ff备畦,就不做例子了低飒。
    再舉個負數(shù)的例子:04 ff ff ff ff 00
    負數(shù)的處理與大整完全相同,與二進制負數(shù)也很相似懂盐,只是符號位并不會占整個最高褥赊。二進制最高位0表示正,1表示負莉恼。上面被解析為-1

長整&小數(shù)解析(05)

整數(shù)從41 b0開始拌喉,負數(shù)從c1 b0開始,小數(shù)未破解成功俐银。
該類型的值長度固定為8尿背,前五位與整數(shù)處理相同每位均從00ff,后三位可以看成補位或借位捶惜,前面提到位數(shù)從00ff如果需要表示更大的數(shù)就從后三位借位讓后三位與第四位組成一個階數(shù)田藐。
若41 c0 00 00 00 00 00 00 表示1 則41 c0 00 00 00 80 00 00 表示2
41 c0 00 00 01 00 00 00 表示3 則41 c0 00 00 01 80 00 00 表示4
這樣的話就可以將表示范圍擴大到2N倍。
負數(shù)處理完全一樣無特殊處理。
測試過程中發(fā)現(xiàn)最大可處理9007199254740992(后三位剛好使用完ff ff ff)汽久,超過9007199254740992將無法正常處理負數(shù)超過-9007199254740993無法正常處理茴晋。
其中有一個特殊的值-0也被解析為長整80 00。
舉個例子:05 42 20 00 03 c4 80 00 00 00
1).前兩位42 20 比起始值41 b0 大 7 x 16
2).根據(jù)前面提的范圍擴大2N倍那解析出(20 + 21 + 22 + 23 + 24 + 25 + 26) x 16 x 2563 = 34091302912
3).03 : 3 x 2561 x 27 = 98304
4).c4 : 196 x 2560 x 27 = 25088
5).后三位的處理是從高位到低位的回窘,0x80 / 256 / 27 = 64
6).最后相加 34091302912 + 98304 + 25088 + 64 再加上起始的41 b0(1 << 28)最后得到34359861824

數(shù)組解析(09)

數(shù)組的解析,類型后面緊跟數(shù)組長度市袖,長度后面一位用途暫時未知啡直,后面的部分是結(jié)合上面所有的類型進行處理,如下是one-dimensional={"a", "b", "c"}的解析示例

數(shù)組解析
至此常見的類型處理結(jié)束苍碟,01酒觅, 07, 08微峰, object舷丹,double類型未破解,long類型超過9007199254740992的也未正確破解蜓肆,知道的朋友或者有興趣的朋友望留言告知颜凯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市仗扬,隨后出現(xiàn)的幾起案子症概,更是在濱河造成了極大的恐慌,老刑警劉巖早芭,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件彼城,死亡現(xiàn)場離奇詭異,居然都是意外死亡退个,警方通過查閱死者的電腦和手機募壕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來语盈,“玉大人舱馅,你說我怎么就攤上這事±枇遥” “怎么了习柠?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長照棋。 經(jīng)常有香客問我资溃,道長,這世上最難降的妖魔是什么烈炭? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任溶锭,我火速辦了婚禮,結(jié)果婚禮上符隙,老公的妹妹穿的比我還像新娘趴捅。我一直安慰自己垫毙,他們只是感情好,可當我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布拱绑。 她就那樣靜靜地躺著综芥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪猎拨。 梳的紋絲不亂的頭發(fā)上膀藐,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天,我揣著相機與錄音红省,去河邊找鬼额各。 笑死,一個胖子當著我的面吹牛吧恃,可吹牛的內(nèi)容都是我干的虾啦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼痕寓,長吁一口氣:“原來是場噩夢啊……” “哼傲醉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起厂抽,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤需频,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后筷凤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體昭殉,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年藐守,在試婚紗的時候發(fā)現(xiàn)自己被綠了挪丢。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡卢厂,死狀恐怖乾蓬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情慎恒,我是刑警寧澤任内,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站融柬,受9級特大地震影響死嗦,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜粒氧,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一越除、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦摘盆、人聲如沸翼雀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狼渊。三九已至,卻和暖如春类垦,著一層夾襖步出監(jiān)牢的瞬間囤锉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工护锤, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人酿傍。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓烙懦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親赤炒。 傳聞我的和親對象是個殘疾皇子氯析,可洞房花燭夜當晚...
    茶點故事閱讀 45,107評論 2 356

推薦閱讀更多精彩內(nèi)容

  • 國家電網(wǎng)公司企業(yè)標準(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 10,993評論 6 13
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)莺褒,斷路器掩缓,智...
    卡卡羅2017閱讀 134,672評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法遵岩,內(nèi)部類的語法你辣,繼承相關(guān)的語法,異常的語法尘执,線程的語...
    子非魚_t_閱讀 31,645評論 18 399
  • 一年后再讀《一粒紅塵》讓我有了不一樣的感覺舍哄。 第一次讀獨木舟的書是《我亦飄零久》她震撼了我,我第一次知道原來世上還...
    倔強人閱讀 130評論 0 2
  • 其實這幾天都有練字誊锭,只是沒拍照表悬,也沒分享,今天繼續(xù)……
    書書瑞閱讀 183評論 0 0