<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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



          同文本文件一樣,打開和關(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.

          上一頁 1 2 下一頁

          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();