作者AirWall (空氣牆)
看板C_and_CPP
標題[問題] 序列化
時間Thu Apr 4 01:39:31 2019
寫題目的時候遇到序列化的問題,
查了很久還是不清楚到底什麼是序列化,
想問問大家我對序列化的了解是否正確。
目前了解要序列化是因為舉例來說像是 int 在不同編譯器或者系統就會有
不同的 machine code,或者一些資料結構的狀態不好直接儲存,
所以轉成一個方便的格式來儲存,傳輸。
然後我看到序列化就是把資料轉成 a squence of bits,
我的理解是 like 0101010111111110100 這樣,
但我看到題目是把 binary tree 轉成 "[1,2,3,null,null,4,5]" 的字串形式,
還有像是現在網路傳輸,很多序列化也是轉成JSON字串,
這裡我理解是因為原本 tree 的結構不好被儲存,
轉成字串形式就很好儲存,也能依此還原出 tree。
但這個步驟好像比較像是把不好儲存的狀態轉成一個好儲存的格式,
跟轉成 a squence of bits 好像沒什麼關係?
1. 是因為最終這個 string 會被轉成 010101001000 的格式所以也算有轉成
a seq of bits嗎?
2. 如果是這樣,想請問除了序列化成字串以外,還可以序列化成什麼?
可以序列化成 array of char 嗎,因為 array contiguous 然後 char 都是 1 Byte
如果有理解錯誤,或問題怪怪的,
還麻煩指正一下,感謝~
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.9.88
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1554313173.A.8BD.html
※ 編輯: AirWall (114.24.9.88), 04/04/2019 01:41:25
1F:→ hsnuyi: 所以tree原始是怎麼儲存的? 在記憶體中總不是畫些node用鉛 04/04 02:37
2F:→ hsnuyi: 筆連起來吧 04/04 02:37
3F:→ hsnuyi: 不然這樣問好了 leetcode中有關tree的題目 它原始的test d 04/04 02:42
4F:→ hsnuyi: ata是怎給的? 這裡指的不是餵進function的root node point 04/04 02:42
5F:→ hsnuyi: er 04/04 02:42
6F:推 s4300026: 序列化就是用小,中,大括號表示表示,變數,陣列,vect 04/04 12:01
7F:→ s4300026: or,map,class等儲存格式。 04/04 12:01
8F:→ Feis: 先了解什麼是反序列化? 04/04 12:12
9F:→ yvb: 1. google: bitstream wiki 04/04 12:14
10F:→ yvb: 2. 未必字串,甚至位元為單位也可能,只是大多存儲單位是位元組 04/04 12:14
11F:→ AirWall: 感謝大家的關鍵字,瞭解許多,謝謝 04/05 01:49
12F:推 x246libra: 我個人是比較分不清楚serialize 跟marshal 04/05 17:09