二进制安全
2015-11-24 00:00
176 查看
摘要: 二进制安全的个人理解
背景:
今天同事在群里,抛出此问题。咋一看,很是奇怪,从来没听说过二进制安全的概念。仔细回想了下,又似曾相识,但实在又想不起来,这个到底是个啥东东。故再次借助网络,为了加深记忆及方便查找。特记录!
正文:
先来段维基百科的解释:
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等等
背景:
今天同事在群里,抛出此问题。咋一看,很是奇怪,从来没听说过二进制安全的概念。仔细回想了下,又似曾相识,但实在又想不起来,这个到底是个啥东东。故再次借助网络,为了加深记忆及方便查找。特记录!
正文:
先来段维基百科的解释:
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等等
相关文章推荐
- 一个Office Professional Plus 2010可联网激活密钥
- 设计模式----组合模式UML和实现代码
- 设计模式----桥接模式UML和实现代码
- Spring MVC拦截器+注解方式实现防止表单重复提交
- spring ORM管理
- mybatis 的select in
- Oracle DECODE函数的用法详解
- IOS 正则表达式
- " #import <库名>" “#import '类名.h 区别
- 个人收集的iOS开源项目与框架
- 几个老爱忘记的html标签
- AngularJS,为什么我们要使用$apply()?在什么时候使用?
- 每一天,程序员是怎么过得?
- [C/C++][文件操作] 对比目录并列出同名较新文件、较旧文件 0.1
- python中动态变量创建
- Java 泛型方法 泛型容器生成工具类
- TQ210 NFS服务器的配置和使用
- JavaScript实现鼠标拖拽效果
- 带箭头气泡提示框
- Eclipse代码提示模板