我正在阅读关于大字节序和小字节序的非常有趣的课程。一个伪代码示例解释了如何将 longInt(4 字节)从大端转换为小端或相反的东西。
Function Reverse (N:LongInt) : LongInt ;
Var B0, B1, B2, B3 : Byte ;
Begin
B0 := (N AND $000000FF) SHR 0 ;
B1 := (N AND $0000FF00) SHR 8 ;
B2 := (N AND $00FF0000) SHR 16 ;
B3 := (N AND $FF000000) SHR 24 ;
Reverse := (B0 SHL 24) OR (B1 SHL 16) OR (B2 SHL 8) OR (B3 SHL 0) ;
End ;
代码就是这样,我在第一行十六进制表示时遇到了麻烦。他们如何通过这样做在这里提取第一个字节
B0 := (N AND $000000FF) SHR 0 ;
? 什么操作
N AND $000000FF
做?
我看到 AND 对二进制表示做了什么,但是十六进制表示呢?接下来的几行让我感到惊讶。
谢谢并恭祝安康。