新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > labview的深入探索----文件系列之二進(jìn)制文件

labview的深入探索----文件系列之二進(jìn)制文件

作者: 時(shí)間:2017-01-09 來(lái)源:網(wǎng)絡(luò) 收藏
二進(jìn)制文件是計(jì)算機(jī)文件中最常見(jiàn)的文件,它占用空間最小,適合于連續(xù)存儲(chǔ)大量數(shù)據(jù),同時(shí)它的存儲(chǔ)格式基本和數(shù)據(jù)在內(nèi)存中的存儲(chǔ)格式一致或者類似,很多情況下,甚至是內(nèi)存的映射,因此無(wú)論是存儲(chǔ)還是讀取都是速度最快的,同時(shí),具有非常高的安全性,如果不知道數(shù)據(jù)的格式,很難分析出文件的格式.



同文本文件一樣,打開(kāi)和關(guān)閉是完全相同的,不同的是寫(xiě)VI和讀VI.

先看一個(gè)簡(jiǎn)單寫(xiě)的例子


上面寫(xiě)的是U8數(shù)組,我們知道,一個(gè)U8對(duì)應(yīng)一個(gè)字節(jié),1024個(gè)U8數(shù)組對(duì)應(yīng)的文件長(zhǎng)度應(yīng)該是1024=1K,但是實(shí)際文件長(zhǎng)度是1028=4+1024,同理,下面的是I32的數(shù)組,一個(gè)I32=4BYTE,所以文件長(zhǎng)度應(yīng)該是1024*4=4096,但是實(shí)際文件長(zhǎng)度是4100=4+4*1024.

可以看出,對(duì)一維數(shù)組,多出四個(gè)字節(jié)的長(zhǎng)度,實(shí)際上是多出一個(gè)U32=4BYTE,代表的是一維數(shù)組的長(zhǎng)度.原因在于WRITE BIN FILE VI,有一個(gè)選擇項(xiàng),如下圖,表示是否寫(xiě)入數(shù)組長(zhǎng)度或者字符串長(zhǎng)度.



如果取消寫(xiě)入數(shù)組或者字符串長(zhǎng)度,則數(shù)組所占空間大小和二進(jìn)制文件所占空間完全相同.


之所以讀寫(xiě)二進(jìn)制文件速度是最快的,根本原因在于二進(jìn)制文件的存儲(chǔ)方式和數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式相似或者完全一致.

WRITE BIN FILE VI還有一個(gè)重要的輸入選擇項(xiàng)目,BYTE ORDER(字節(jié)次序),很多編程語(yǔ)言或者操作系統(tǒng)稱之為大小端的問(wèn)題.

在所有的計(jì)算機(jī)系統(tǒng),包括單片機(jī)中,都存在大小端的問(wèn)題.簡(jiǎn)單地介紹一下.
我們知道,一個(gè)整數(shù)U16或者I16,有兩個(gè)字節(jié)組成,比如整數(shù)0X1234,由字節(jié)0X12,和0X34組成,那么,在內(nèi)存中或者文件中,到底是0X12在前還是0X34在前那,在不同的操作系統(tǒng)和不同的編程語(yǔ)言中,這是有區(qū)別的,這就造成的數(shù)據(jù)的大小端的問(wèn)題.

對(duì)于我們自己的數(shù)據(jù)二進(jìn)制文件,這個(gè)選擇并不重要,因?yàn)長(zhǎng)V的讀二進(jìn)制VI也有同樣的選擇項(xiàng),保持二者一致就可以了,但是如果被其它編程語(yǔ)言讀取或者讀取其他語(yǔ)言寫(xiě)的二進(jìn)制文件,就要考慮大小端的問(wèn)題,否則數(shù)據(jù)表現(xiàn)可能會(huì)出現(xiàn)錯(cuò)誤,比如0X1234,可能會(huì)變成0X3412.

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


技術(shù)專區(qū)

關(guān)閉