Packet:array[0..1000] of byte;type
USHORT = WORD;
ULONG = DWORD;
time_t = Longint;TIPHeader = record
iph_verlen: UCHAR;
iph_tos: UCHAR;
iph_length: USHORT;
iph_id: USHORT;
iph_offset: USHORT;
iph_ttl: UCHAR;
iph_protocol: UCHAR;
iph_xsum: USHORT;
iph_src: ULONG;
iph_dest: ULONG;
end;
TTCPHeader = record
sourcePort: WORD;
destinationPort: WORD;
sequenceNumber: ULONG;
acknowledgeNumber: ULONG;
dataoffset: UCHAR;
flags: UCHAR;
windows: USHORT;
checksum: USHORT;
urgentPointer: USHORT;
end;
begin
Move(Packet[0], IPHeader, IPHeaderSize);
Move(Packet[IPHeaderSize], TCPHeader, TCPHeaderSize);
end;Packet:= 45 00 00 28 23 7A 00 00 80 06 2A BA C0 A8 01 0A 45 04 E5 E5 7E 55 00 50 28 37 68 3A 00 00 00 00 50 02 40 00 8B D0 00 00;IPHeader 读出来 完全正常 ;但TCPHeader 读出来却是相反的,比如TCPHeader.sourcePort 读出来是应该是7E 55 ,可是这样得到的却是55 7E各位大侠,这个应该怎么解决?
LogData := Format(‘Destination vl : %2X’, [IPHeader.iph_verlen]);
LogData := Format(‘Destination port : %2X’, [TCPHeader.sourcePort]);memo1.Text :=memo1.Text + LogData;显示为 Destination vl : 45
Destination port: 557E
procedure TForm1.Button3Click(Sender: TObject);
var
a : word;; tt : array[0..1] of byte;
begin
tt[0] := 1;
tt[1] := 2;
move(tt[0],a,length(tt));
self.Memo1.Lines.Add(IntToStr((PByte(Integer(@a))^)));
self.Memo1.Lines.Add(IntToStr((PByte(Integer(@a)+1)^)));
self.Memo1.Lines.Add(IntToStr(a))
end;
小端存放问题。lz研究下这个例子就会明白