1、二进制安全的定义
1、非二进制安全:c中的strlen函数,因为它依赖于特殊的字符’\0’来判断字符串是否结束,所以对于字符串str = "1234\0123"来说,strlen(str)=4。
2、二进制安全:redis实现的 sds(简单动态字符串),因为它不会对任何字符(包括’\0’)进行特殊解释,所以在redis中,strlen(str)=8。
二进制安全是一种主要用于字符串操作函数相关的计算机编程术语。
其描述的是:将输入作为原始的、无任何特殊格式意义的数据流。对于每个字符都公平对待,不特殊处理某一个字符。
再举个例子:(展示非二进制安全)
#include <stdio.h>
#include <cstring>
int main(void) {
char a[] = "Hello";
char b[] = "Hello\0Hello";
printf("%d\n", strcmp(a, b));
return 0;
}
可从下面结果中看出,strcmp函数认为a和b两个字符串是相等的。