[英]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.