引子

为什么 php 手册里经常说某个函数是二进制安全的?我们平常使用函数的时候也没发现有什么区别呀,那么二进制安全到底是什么意思呢?

Php 实验
<?php echo strlen("abc"); // 3 echo strlen("abc\0"); // 4 echo
strlen("abc\0d"); // 5 echo strlen("abc\0def"); // 7
从上面的规律可以看出\0被认为是一个字符,其实在上面的式子中\0是一个ascii字符。

补课简单说明下 ascii 码


我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符