繁体   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