1. 程式人生 > >DELPHI裡byte型陣列取值與比較

DELPHI裡byte型陣列取值與比較

Delphi裡申明一個數組array of byte = ($00,$**,$**,$**,$**,$00); 
我從伺服器收到一段資料存在如上的一個6位元組陣列中,我要判斷中間的4個位元組是不是($80,$00,$00,$01),要怎麼寫呢,非要一個個位元組比較嗎?
很簡單...
假設你的陣列變數為 a,並且下標從 0 開始:
var
  a: YourArrayType;
  p: PInteger;
begin
  ...
  p := @a[1]; //指向第二個位元組
  if p^ = $01000080 then // Intel 處理器的整數高位在高地址區,所以要反過來
  ...
end;
原理就是:4個位元組是一個整數的空間,直接比較一個整數變數和一個常數是否相等
如果你要判斷的位元組數超過8個,或者($80,$00,$00,$01)是變化的,這個方法就不行了,要用 CompareMem 來比較,速度要慢一些:
var
  a: YourArrayType;
  b: YourConst;
begin
  ...
  if CompareMem(@a, @b, SizeOf(b)) then
  ...
end;