• 关于 Lo、Hi、LoWord、HiWord


    Cardinal 是 4 字节无符号的整型, 先看一个例数:

    Cardinal 例数: 4277991664
    按字节划分: 第四字节 第三字节 第二字节 第一字节
    二进制: 11111110 11111100 11111000 11110000
    十六进制: FE FC F8 F0
    十进制: 254 252 248 240
    按双字节划分: 高两位 低两位
    二进制: 1111111011111100 1111100011110000
    十六进制: FEFC F8F0
    十进制: 65276 63728

    //可以用 Lo 函数提取它的低字节(也就是第一个字节)
    const
      c: Cardinal = 4277991664;
    begin
      ShowMessageFmt('%d', [Lo(c)]); {240}
    end;
    
    //其实不使用 Lo 函数, 通过 Byte 类型转换也可以获取第一个字节 const c: Cardinal = 4277991664; begin ShowMessageFmt('%d', [Byte(c)]); {240} end;
    //Hi 函数说是获取高位字节, 其实是获取第二个字节 const c: Cardinal = 4277991664; begin ShowMessageFmt('%d', [Hi(c)]); {248} end;
    //如果要获取低两位, 貌似应该有个 LoWord 函数; 确实有, 但它不是函数, 只是 Word 类型的一个别称. const c: Cardinal = 4277991664; begin ShowMessageFmt('%d', [LoWord(c)]); {63728} ShowMessageFmt('%d', [Word(c)]); {63728} end;
    //HiWord 函数是提取高两位的 const c: Cardinal = 4277991664; begin ShowMessageFmt('%d', [HiWord(c)]); {65276} end;
    说说 LoWord 和 HiWord 的用途:

    譬如在一个鼠标消息的消息参数 lParam 中存放着鼠标位置. lParam 是 4 字节的, 它的低两位存放 x、高两位存放 y ...

    我在这个例子中用到过: http://www.cnblogs.com/del/archive/2008/04/19/1160968.html

    System 单元下的公用函数目录

  • 相关阅读:
    JAVA多线程之AQS
    LRU算法
    JAVA设计之SPI
    JAVA多线程之CAS
    操作系统之中断处理
    计算机领域思想
    操作系统之I/O
    操作系统之虚拟内存
    Mysql事务原理
    Mysql添加索引
  • 原文地址:https://www.cnblogs.com/del/p/1167554.html
Copyright © 2020-2023  润新知