今天同事在群里,抛出此问题。咋一看,很是奇怪,从来没听说过二进制安全的概念。仔细回想了下,又似曾相识,但实在又想不起来,这个到底是个啥东东。故再次借助网络,为了加深记忆及方便查找。特记录!
正文:
先来段维基百科的解释:
Binary-safe
is a
computer programming
term mainly used in connection with
string
manipulating
functions
. A binary-safe function is essentially one that treats its input as a raw stream of data without any specific format. It should thus work with all 256 possible values that a character can take (assuming
8-bit
characters)
意思大概是(网摘):
二进制安全是一种主要用于字符串操作函数相关的计算机编程术语。一个二进制安全功能(函数),其本质上将操作输入作为原始的、无任何特殊格式意义的数据流。其在操作上应包含一个字符所能有的256种可能的值(假设为8为字符)。
从上面这段话来看,意思就是对于每个字符都公平对待,不特殊处理某一个字符,没有特供水,没有特供大米,大家都是一样一样滴!这么看来二进制安全应该描述的是一种行为,而不是一种属性。那说 string 是二进制安全,个人认为应该理解为,string相关的操作是二进制安全的,
为了巩固理解,举一个反例吧:
C语言中字符指针就不是二进制安全的,因为他会认为\0为结束符。也就说他没有公平对待每一个字符,特例化了\0.故它相关的操作都不是二进制安全的。比如strlen、strcpy等等