电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

VB也能访问内存


发布日期:2023/3/31
 

有人说vb不能操作内存效率低下我不是太赞同vb跟c比当然效率比较低下了但是如果使用得当还是有不少的效率提高的

在开发windows上的应用时(注意啊不是驱动)理论上来说用vb可以做任何软件因为vb本身没有的可以使用api而win api时可以实现windows上的任何应用功能的当然这和使用者的功力有很大的关系如果c/c++的功力很好你甚至可以用vb实现内存拷贝的功能因为long类型可以做指针

最近在做界面 对vb有点研究 给个例子吧比如进制转换进制

用vb的一般用除法这么做

public function ob(byval long nValue) as string

dim nValueCopy as long

dim nTmp as byte

dim sReturn as string 返回值

nValueCopy = nValue

也有用nValue ^N 方式的这里就不多说了

do while nValueCopy >

nTmp = nValueCopy /

sReturn = cstr( nValueCopy nTmp / ) & sReturn 反向累计

nValueCopy = nTmp

loop

ob = sReturn

end function

而用c比较熟的人一般按位去做

public function ob(byref long nValue) as string

dim nBit( to ) as byte 最小的单位是byte了放掩码

dim nByte( to ) as byte 分解nValue到字节的

dim nTmp as byte

dim pValue as long 指针

dim sReturn as string 返回值

dim i as byte j as byte

nBit() =

nBit() =

nBit() =

nBit() =

nBit() =

nBit() =

nBit() =

nBit() =

取 nValue 的地址

pValue = VarPtr( nValue )

win api 将nValue的个字节分别复制到nByte中byref 就相当于指针

CopyMemory( nByte( byref pValue

for i = to 低字节在前

for j = to 高位开始

方法一 减法

nTmp =

if nByte(i) > nBit(j) then

nByte = nByte(i) nBit(j)

nTmp = 这一位二进制是

end if

sReturn = sReturn & cstr(nTmp)

方法二按位与 效率更高

nTmp =

if ( not ( nByte(i) imp nBit(j) ) ) = nBit(j) then

我没有找到vb按位与的函数只有按位同与(不记得是不是)的imp

nTmp =

end if

sReturn = sReturn & cstr(nTmp)

next j i

ob = sReturn

end function

在网吧里没有环境随手写写有错误请见谅主要是思路

上一篇:Memcached常用命令以及使用说明详解

下一篇:详解Remoting序列化及租约