How To - 如何計算資料以binary方式儲存之檔案大小?

很多時候我們會以binary方式儲存資料,除了不用文字型態來儲存而可以大幅縮小檔案容量之外,同時也可以儲存各種格式的資料。

但是在使用的時候往往會遇到這個狀況:我要知道儲存N筆混和型態資料之後,該檔案有多大?此時就必須要知道 LabVIEW 中 Data 儲存的方式及各種資料型態的大小。

Boolean:
最簡單的T/F ,大家或許會認為這個只佔了 1 個位元,很抱歉,他佔了 1 個位元組,也就是 8 個位元,0 會被當作 F,其他的則為 T。

I8 / U8、I16 / U16、I32 / U32、I64 / U64、:
最基本的 8 位元 、16 位元、32 位元、64 位元,
也就是 1 / 2 / 4 / 8 個位元組。

Single precision / Double precision / Extended precision / Fix-point:
分別為 32 位元 / 64 位元 / 128 位元 / 64 位元,
也就是 4  / 8  / 16 / 8 個位元組

複數型態:
就是根據精度狀態再乘以2,因為有實部跟虛部,
也就是 8  / 16 / 32 個位元組

字串型態:
最前面會有 4 個位元組表示字串長度,接著每個字元就是 1 個位元組,
例如 Hello World!,共有12個字母,所以就是 4+12=16 個位元組

路徑型態:
資料庫中找不到說明,不過猜測應該是表示路徑用了8個位元組,接下來看字串的長度,例如 C:\123 這個路徑共有 6 個字元,所以就是 8+4+6=18 個位元組

陣列型態:
最前面會有 4 個位元組來表示一個為度的陣列長度,接著每一個元素就是各自資料型態的大小,
例如 I16 的 1x4 陣列 [0,0,0,0],每個元素是 2 個位元組, 4 個元素就是 8 個位元組,加上表頭就是 4+8=12 個位元組
例如 I16 的 2x4 陣列 [0,0,0,0 ; 0,0,0,0],每個元素是 2 個位元組, 8 個元素就是 16 個位元組,加上表頭就是 4x2+16=24 個位元組

叢集型態:
其實就是將所有的資料型態依序排列,所以大小也就依序累加即可。
例如一個叢集依序包含 I16、Boolean、I16[0,0,0,0],
則資料大小就是 2+1+12=15 個位元組
如果這個叢集又被放在陣列內,那麼就把這 15 個位元組視為一個元素,再依照陣列的方式來計算。

以上就是簡單可以計算出欲儲存資料的大小方式。