labview的深入探索----文件系列之二進(jìn)制文件
同文本文件一樣,打開和關(guān)閉是完全相同的,不同的是寫VI和讀VI.
先看一個(gè)簡單寫的例子
上面寫的是U8數(shù)組,我們知道,一個(gè)U8對應(yīng)一個(gè)字節(jié),1024個(gè)U8數(shù)組對應(yīng)的文件長度應(yīng)該是1024=1K,但是實(shí)際文件長度是1028=4+1024,同理,下面的是I32的數(shù)組,一個(gè)I32=4BYTE,所以文件長度應(yīng)該是1024*4=4096,但是實(shí)際文件長度是4100=4+4*1024.
可以看出,對一維數(shù)組,多出四個(gè)字節(jié)的長度,實(shí)際上是多出一個(gè)U32=4BYTE,代表的是一維數(shù)組的長度.原因在于WRITE BIN FILE VI,有一個(gè)選擇項(xiàng),如下圖,表示是否寫入數(shù)組長度或者字符串長度.
如果取消寫入數(shù)組或者字符串長度,則數(shù)組所占空間大小和二進(jìn)制文件所占空間完全相同.
之所以讀寫二進(jìn)制文件速度是最快的,根本原因在于二進(jìn)制文件的存儲(chǔ)方式和數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式相似或者完全一致.
WRITE BIN FILE VI還有一個(gè)重要的輸入選擇項(xiàng)目,BYTE ORDER(字節(jié)次序),很多編程語言或者操作系統(tǒng)稱之為大小端的問題.
在所有的計(jì)算機(jī)系統(tǒng),包括單片機(jī)中,都存在大小端的問題.簡單地介紹一下.
我們知道,一個(gè)整數(shù)U16或者I16,有兩個(gè)字節(jié)組成,比如整數(shù)0X1234,由字節(jié)0X12,和0X34組成,那么,在內(nèi)存中或者文件中,到底是0X12在前還是0X34在前那,在不同的操作系統(tǒng)和不同的編程語言中,這是有區(qū)別的,這就造成的數(shù)據(jù)的大小端的問題.
對于我們自己的數(shù)據(jù)二進(jìn)制文件,這個(gè)選擇并不重要,因?yàn)長V的讀二進(jìn)制VI也有同樣的選擇項(xiàng),保持二者一致就可以了,但是如果被其它編程語言讀取或者讀取其他語言寫的二進(jìn)制文件,就要考慮大小端的問題,否則數(shù)據(jù)表現(xiàn)可能會(huì)出現(xiàn)錯(cuò)誤,比如0X1234,可能會(huì)變成0X3412.
評論