0
私は大きくて少し面白いレッスンを読んでいますendianness。擬似コードサンプルでは、longInt(4バイト)をビッグエンディアンからリトルエンディアンに変換する方法、またはその逆の方法を説明しています。16進ビット操作
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 ;
コードはこのようなもので、最初の行から16進表現で問題があります。彼らはこれを行うことで最初のバイトをここからどのように抽出するのですか?
B0 := (N AND $000000FF) SHR 0 ;
?何が操作ですか?
N AND $000000FF
は何ですか?
バイナリ表現でANDとは何か分かりますが、16進表現はどうでしょうか?そして、私の驚きは、次の行ではすべて同じです。
ありがとうございます。