ビッグエンディアンとリトルエンディアンに関する非常に興味深いレッスンを読んでいます。擬似コード サンプルでは、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 ;
コードがそうで、1行目から16進数表記で困っています。それを行うことによって、彼らはここで最初のバイトをどのように抽出しますか
B0 := (N AND $000000FF) SHR 0 ;
? 操作は何ですか
N AND $000000FF
行う?
AND が 2 進数表現に対して何をするかはわかりますが、16 進数表現はどうでしょうか? そして、私の驚きは次の行でも同じです。
ありがとうございます。