有人说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 在网吧里没有环境随手写写有错误请见谅主要是思路 |