快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

金尊国际平台手机版:VB也能访问内存



有人说vb不能操作内存,效率低下,我不是太附和.vb跟c比当然效率对照低下了,然则假如应用适合照样有不少的效率前进的.

在开拓windows上的利用时(留意啊,不是驱动),理论上来说,用vb可以做任何软件.由于vb本身没有的,可以应用api,而win32 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 '返回值

nValueC金尊国际平台手机版opy = nValue

'也有用nValue - 2^N 要领的,这里就不多说了

do while nValueCopy > 0

nTmp = nValueCopy / 2

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

nValueCopy = nTmp

loop

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 n金尊国际平台手机版Tmp as byte

dim pValue as long' 指针

dim sReturn as string' 返回值

dim i as byte, j as byte

nBi金尊国际平台手机版t(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 = VarPtr( 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

在网吧里,没有情况,随手写写,有差错请见谅,主如果思路.

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: