簡體   English   中英

快速比較兩個內存區域

[英]compare fast two memory regions

如何將兩個快速(可變大小)存儲區域比較為二進制?

int compare (void *a,void *b,size_t size){
...
}


// reg1 > reg2
reg1 = 00001000000000000000000000000000000000000000 (binary);
reg2 = 00000100000000000000000000000000000000000000 (binary); 

if (compare(reg1,reg2,32) > 0){
  return true;
}else{
  return false;
};

所有比較都是使用本機二進制執行的,因為這是內部表示,除非您需要比較二進制數字的文本表示。

對於特定於平台的答案,請檢查平台處理器的匯編語言。 許多現代處理器具有用於比較內存區域的匯編語言指令。

正如其他評論者所述, memcmp是您的最佳選擇,因為應針對您的平台對其進行優化。

如果您必須自己編寫,我建議從內存中加載一個單詞,然后逐字比較內存,直到沒有匹配為止。 如果您需要更多詳細信息,請逐字節比較單詞,以找出確切的差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM