VB也能訪問記憶體 (轉)
有人說vb不能操作,低下,我不是太贊同.vb跟c比當然效率比較低下了,但是如果使用得當還是有不少的效率提高的.
在開發上的應用時(注意啊,不是),理論上來說,用vb可以做任何.因為vb本身沒有的,可以使用,而 api時可以實現windows上的任何應用功能的.當然這和使用者的功力有很大的關係,如果c/c++的功力很好,你甚至可以用vb實現記憶體複製的功能,因為long型別可以做指標.
最近在做介面, 對vb有點研究, 給個例子吧.比如10進位制轉換2進位制.
用vb的一般用除法這麼做:
public function o2b(byval long nValue) as string
dim nValueCopy as long
dim nTmp as byte '商
dim sReturn as string '返回值
nValueCopy = nValue
'也有用nValue - 2^N 方式的,這裡就不多說了
do while nValueCopy > 0
nTmp = nValueCopy / 2
sReturn = cstr( nValueCopy - nTmp / 2 ) & sReturn '反向累計
nValueCopy = nTmp
l
o2b = sReturn
end function
而用c比較熟的人一般按位去做:
public function o2b(byref long nValue) as string
dim nBit( 0 to 7 ) as byte ' 最小的單位是byte了,放掩碼
dim nByte( 1 to 4 ) as byte ' 分解nValue到位元組的
dim nTmp as byte
dim pValue as long ' 指標
dim sReturn as string ' 返回值
dim i as byte, j as byte
nBit(0) = 1 '00000001
nBit(1) = 2 '00000010
nBit(2) = 4 '00000100
nBit(3) = 8 '00001000
nBit(4) = 16 '00010000
nBit(5) = 32 '00100000
nBit(6) = 64 '01000000
nBit(7) = 128 '10000000
' 取 nValue 的地址
pValue = Vtr( nValue )
' win32 api, 將nValue的4個位元組分別複製到nByte中,byref 就相當於指標
CopyMemory( nByte(1), byref pValue, 4 )
for i = 4 to 1 '低位元組在前
for j = 7 to 0 '高位開始
' 方法一, 減法
nTmp = 0
if nByte(i) > nBit(j) then
nByte = nByte(i) - nBit(j)
nTmp = 1 ' 這一位二進位制是1
end if
sReturn = sReturn & cstr(nTmp)
' 方法二,按位與 效率更高
nTmp = 1
if ( not ( nByte(i) imp nBit(j) ) ) = nBit(j) then
' 我沒有找到vb按位與的,只有按位"同與"(不記得是不是)的imp
nTmp = 0
end if
sReturn = sReturn & cstr(nTmp)
next j, i
o2b = sReturn
end function
在裡,沒有環境,隨手寫寫,有錯誤請見諒,主要是思路.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991744/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Windows 95/98下直接訪問實體記憶體 (轉)Windows記憶體
- 記憶體訪問全過程記憶體
- Keep小表到記憶體,提高訪問速度記憶體
- 一個SMMU記憶體訪問異常的問題記憶體
- 關於java記憶體訪問重排序的思考Java記憶體排序
- ReFlex:讓遠端快閃記憶體訪問擁有本地訪問的效能Flex記憶體
- 01-0006 C++記憶體訪問越界 [問題整理]C++記憶體
- 【JVM之記憶體與垃圾回收篇】物件例項化記憶體佈局與訪問定位JVM記憶體物件
- 用VB編寫OPC客戶端訪問WINCC (轉)客戶端
- [轉載] Java直接記憶體與堆記憶體Java記憶體
- Swift 5將強制執行記憶體獨佔訪問Swift記憶體
- 物件的例項化、記憶體佈局以及訪問定位物件記憶體
- Android記憶體分配/回收的一個問題-為什麼記憶體使用很少的時候也GCAndroid記憶體GC
- python能讀寫記憶體嗎Python記憶體
- Oracle 記憶體顧問Oracle記憶體
- 堆記憶體和棧記憶體詳解(轉載)記憶體
- VB輸入限制的記憶體破解 (2千字)記憶體
- 【組合語言】第 3 章 暫存器(記憶體訪問)組合語言記憶體
- RAC一個節點記憶體故障當機,無法訪問記憶體
- JAVA記憶體管理 [轉]Java記憶體
- 轉:Oracle 記憶體分析Oracle記憶體
- 強如 Disruptor 也發生記憶體溢位?記憶體溢位
- 小白也能看懂的Java記憶體模型Java記憶體模型
- 分享五個口碑爆棚的電腦軟體!記憶體再小也能輕鬆使用!照單收藏!記憶體
- JVM之物件的建立、記憶體佈局、訪問走位總結JVM物件記憶體
- linux下訪問Window分驅(NTFS)以及Mount快閃記憶體Linux記憶體
- SQLServer記憶體問題分析SQLServer記憶體
- 探究 iOS 記憶體問題iOS記憶體
- 共享記憶體分段問題記憶體
- 記憶體溢位問題記憶體溢位
- 【轉】java中的記憶體溢位和記憶體洩漏Java記憶體溢位
- 記憶體分配方式 (轉)記憶體
- 記憶體管理之五 (轉)記憶體
- 記憶體管理之一 (轉)記憶體
- 記憶體管理原始碼 (轉)記憶體原始碼
- Windows CE記憶體管理 (轉)Windows記憶體
- oracle-記憶體表(轉)Oracle記憶體
- Solaris記憶體監控(轉)記憶體