vb基础   vb实例教程   api调用   控件使用   经验技巧   数据库操作   算法及技术   vb源码下载
您的位置:首页 >> vb教程 >> 算法及技术

如何转换C代码中的高字和低字
出处:网络

HiWords and LoWords from Long Values

 When translating C code to VB, you quite often come across the HiWord and LoWord

operators, used to pack two integers into a long value. A simple translation of

HiWord code will run into difficulties when unsigned integer arithmetic is being

used in the C code and the highest bit of the long value can be set. Since VB doesn't

support unsigned arithmetic we have to strip out the high bit and add it back again

later to avoid overflows and misleading results.

  当把C代码翻译到VB时,你经常会遇到高字和低字的操作,通常是把两个整型值合成一个长整型。当在C代码中使用了无符号整型,这最高一位是可以被设置的,因此简单的直接转换高字将会遇到困难。由于VB不支持无符号算术符,我们只好剥去这最高一位,在稍后再把它加回来,以避免溢出和错误的结果。(WXJ_Lake 译)

开始一个新工程,增添一个标准模块。把以下代码写入模块:

Start a new project then add a module. Add the following code to the module:

Public Property Get LoWord(ByRef lThis As Long) As Long

  LoWord = (lThis And &HFFFF&)

End Property

Public Property Let LoWord(ByRef lThis As Long, ByVal lLoWord As Long)

  lThis = lThis And Not &HFFFF& Or lLoWord

End Property

Public Property Get HiWord(ByRef lThis As Long) As Long

  If (lThis And &H80000000) = &H80000000 Then

   HiWord = ((lThis And &H7FFF0000) \ &H10000) Or &H8000&

  Else

   HiWord = (lThis And &HFFFF0000) \ &H10000

  End If

End Property

Public Property Let HiWord(ByRef lThis As Long, ByVal lHiWord As Long)

  If (lHiWord And &H8000&) = &H8000& Then

   lThis = lThis And Not &HFFFF0000 Or ((lHiWord And &H7FFF&) * &H10000) Or &H80000000

  Else

   lThis = lThis And Not &HFFFF0000 Or (lHiWord * &H10000)

  End If

End Property

[返回]

     

首页 | 设为首页 | 加入收藏 | 关于本站 | 友情链接 | 版权声明

     
 
Copyright© www.bianceng.cn Powered by 编程入门网 All Rights Reserved
吉ICP备06005558号