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